@timeax/form-palette 0.0.2 → 0.0.4
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/adapters/axios.d.ts +21 -0
- package/dist/adapters/axios.d.ts.map +1 -0
- package/dist/adapters/axios.js +74 -0
- package/dist/adapters/axios.js.map +1 -0
- package/dist/adapters/index.d.ts +35 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +74 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/inertia.d.ts +24 -0
- package/dist/adapters/inertia.d.ts.map +1 -0
- package/dist/adapters/inertia.js +126 -0
- package/dist/adapters/inertia.js.map +1 -0
- package/dist/core/adapter-registry.d.ts +30 -0
- package/dist/core/adapter-registry.d.ts.map +1 -0
- package/{src/core/adapter-registry.ts → dist/core/adapter-registry.js} +10 -28
- package/dist/core/adapter-registry.js.map +1 -0
- package/{src/core/bound/bind-host.ts → dist/core/bound/bind-host.d.ts} +2 -3
- package/dist/core/bound/bind-host.d.ts.map +1 -0
- package/dist/core/bound/bind-host.js +2 -0
- package/dist/core/bound/bind-host.js.map +1 -0
- package/dist/core/bound/observe-bound-field.d.ts +21 -0
- package/dist/core/bound/observe-bound-field.d.ts.map +1 -0
- package/dist/core/bound/observe-bound-field.js +116 -0
- package/dist/core/bound/observe-bound-field.js.map +1 -0
- package/dist/core/bound/wait-for-bound-field.d.ts +5 -0
- package/dist/core/bound/wait-for-bound-field.d.ts.map +1 -0
- package/dist/core/bound/wait-for-bound-field.js +35 -0
- package/dist/core/bound/wait-for-bound-field.js.map +1 -0
- package/{src/core/context.ts → dist/core/context.d.ts} +2 -6
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +11 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/core-provider.d.ts +22 -0
- package/dist/core/core-provider.d.ts.map +1 -0
- package/{src/core/core-provider.tsx → dist/core/core-provider.js} +209 -364
- package/dist/core/core-provider.js.map +1 -0
- package/dist/core/core-root.d.ts +26 -0
- package/dist/core/core-root.d.ts.map +1 -0
- package/dist/core/core-root.js +38 -0
- package/dist/core/core-root.js.map +1 -0
- package/dist/core/core-shell.d.ts +22 -0
- package/dist/core/core-shell.d.ts.map +1 -0
- package/dist/core/core-shell.js +8 -0
- package/dist/core/core-shell.js.map +1 -0
- package/{src/core/errors/error-strip.tsx → dist/core/errors/error-strip.d.ts} +2 -39
- package/dist/core/errors/error-strip.d.ts.map +1 -0
- package/dist/core/errors/error-strip.js +18 -0
- package/dist/core/errors/error-strip.js.map +1 -0
- package/dist/core/errors/index.d.ts +4 -0
- package/dist/core/errors/index.d.ts.map +1 -0
- package/dist/core/errors/index.js +4 -0
- package/dist/core/errors/index.js.map +1 -0
- package/dist/core/errors/map-error-bag.d.ts +24 -0
- package/dist/core/errors/map-error-bag.d.ts.map +1 -0
- package/{src/core/errors/map-error-bag.ts → dist/core/errors/map-error-bag.js} +10 -22
- package/dist/core/errors/map-error-bag.js.map +1 -0
- package/dist/core/errors/map-zod.d.ts +18 -0
- package/dist/core/errors/map-zod.d.ts.map +1 -0
- package/{src/core/errors/map-zod.ts → dist/core/errors/map-zod.js} +7 -19
- package/dist/core/errors/map-zod.js.map +1 -0
- package/dist/core/hooks/use-button.d.ts +73 -0
- package/dist/core/hooks/use-button.d.ts.map +1 -0
- package/dist/core/hooks/use-button.js +116 -0
- package/dist/core/hooks/use-button.js.map +1 -0
- package/dist/core/hooks/use-core-context.d.ts +9 -0
- package/dist/core/hooks/use-core-context.d.ts.map +1 -0
- package/{src/core/hooks/use-core-context.ts → dist/core/hooks/use-core-context.js} +3 -6
- package/dist/core/hooks/use-core-context.js.map +1 -0
- package/dist/core/hooks/use-core-utility.d.ts +1 -0
- package/dist/core/hooks/use-core-utility.d.ts.map +1 -0
- package/dist/core/hooks/use-core-utility.js +2 -0
- package/dist/core/hooks/use-core-utility.js.map +1 -0
- package/{src/core/hooks/use-core.ts → dist/core/hooks/use-core.d.ts} +9 -13
- package/dist/core/hooks/use-core.d.ts.map +1 -0
- package/dist/core/hooks/use-core.js +11 -0
- package/dist/core/hooks/use-core.js.map +1 -0
- package/dist/core/hooks/use-field.d.ts +141 -0
- package/dist/core/hooks/use-field.d.ts.map +1 -0
- package/dist/core/hooks/use-field.js +256 -0
- package/dist/core/hooks/use-field.js.map +1 -0
- package/dist/core/hooks/use-optional-field.d.ts +9 -0
- package/dist/core/hooks/use-optional-field.d.ts.map +1 -0
- package/dist/core/hooks/use-optional-field.js +146 -0
- package/dist/core/hooks/use-optional-field.js.map +1 -0
- package/dist/core/index.d.ts +11 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +11 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/registry/binder-registry.d.ts +38 -0
- package/dist/core/registry/binder-registry.d.ts.map +1 -0
- package/dist/core/registry/binder-registry.js +52 -0
- package/dist/core/registry/binder-registry.js.map +1 -0
- package/dist/core/registry/field-registry.d.ts +86 -0
- package/dist/core/registry/field-registry.d.ts.map +1 -0
- package/{src/core/registry/field-registry.ts → dist/core/registry/field-registry.js} +56 -70
- package/dist/core/registry/field-registry.js.map +1 -0
- package/dist/core/test.d.ts +2 -0
- package/dist/core/test.d.ts.map +1 -0
- package/dist/core/test.js +9 -0
- package/dist/core/test.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/{src/index.ts → dist/index.js} +5 -47
- package/dist/index.js.map +1 -0
- package/{src/input/index.ts → dist/input/index.d.ts} +1 -2
- package/dist/input/index.d.ts.map +1 -0
- package/dist/input/index.js +3 -0
- package/dist/input/index.js.map +1 -0
- package/dist/input/input-field.d.ts +15 -0
- package/dist/input/input-field.d.ts.map +1 -0
- package/dist/input/input-field.js +413 -0
- package/dist/input/input-field.js.map +1 -0
- package/dist/input/input-layout-graph.d.ts +77 -0
- package/dist/input/input-layout-graph.d.ts.map +1 -0
- package/dist/input/input-layout-graph.js +108 -0
- package/dist/input/input-layout-graph.js.map +1 -0
- package/{src/input/input-props.ts → dist/input/input-props.d.ts} +22 -84
- package/dist/input/input-props.d.ts.map +1 -0
- package/dist/input/input-props.js +4 -0
- package/dist/input/input-props.js.map +1 -0
- package/dist/lib/get-global-countries.d.ts +3 -0
- package/dist/lib/get-global-countries.d.ts.map +1 -0
- package/dist/lib/get-global-countries.js +70 -0
- package/dist/lib/get-global-countries.js.map +1 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +6 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/presets/index.d.ts +1 -0
- package/dist/presets/index.d.ts.map +1 -0
- package/dist/presets/index.js +2 -0
- package/dist/presets/index.js.map +1 -0
- package/dist/presets/shadcn-preset.d.ts +1 -0
- package/dist/presets/shadcn-preset.d.ts.map +1 -0
- package/dist/presets/shadcn-preset.js +2 -0
- package/dist/presets/shadcn-preset.js.map +1 -0
- package/dist/presets/shadcn-variants/checkbox.d.ts +212 -0
- package/dist/presets/shadcn-variants/checkbox.d.ts.map +1 -0
- package/dist/presets/shadcn-variants/checkbox.js +315 -0
- package/dist/presets/shadcn-variants/checkbox.js.map +1 -0
- package/dist/presets/shadcn-variants/chips.d.ts +154 -0
- package/dist/presets/shadcn-variants/chips.d.ts.map +1 -0
- package/dist/presets/shadcn-variants/chips.js +266 -0
- package/dist/presets/shadcn-variants/chips.js.map +1 -0
- package/dist/presets/shadcn-variants/color.d.ts +63 -0
- package/dist/presets/shadcn-variants/color.d.ts.map +1 -0
- package/dist/presets/shadcn-variants/color.js +96 -0
- package/dist/presets/shadcn-variants/color.js.map +1 -0
- package/dist/presets/shadcn-variants/custom.d.ts +94 -0
- package/dist/presets/shadcn-variants/custom.d.ts.map +1 -0
- package/dist/presets/shadcn-variants/custom.js +80 -0
- package/dist/presets/shadcn-variants/custom.js.map +1 -0
- package/dist/presets/shadcn-variants/date.d.ts +114 -0
- package/dist/presets/shadcn-variants/date.d.ts.map +1 -0
- package/dist/presets/shadcn-variants/date.js +414 -0
- package/dist/presets/shadcn-variants/date.js.map +1 -0
- package/dist/presets/shadcn-variants/file.d.ts +79 -0
- package/dist/presets/shadcn-variants/file.d.ts.map +1 -0
- package/dist/presets/shadcn-variants/file.js +289 -0
- package/dist/presets/shadcn-variants/file.js.map +1 -0
- package/dist/presets/shadcn-variants/keyvalue.d.ts +35 -0
- package/dist/presets/shadcn-variants/keyvalue.d.ts.map +1 -0
- package/dist/presets/shadcn-variants/keyvalue.js +215 -0
- package/dist/presets/shadcn-variants/keyvalue.js.map +1 -0
- package/dist/presets/shadcn-variants/multiselect.d.ts +210 -0
- package/dist/presets/shadcn-variants/multiselect.d.ts.map +1 -0
- package/dist/presets/shadcn-variants/multiselect.js +352 -0
- package/dist/presets/shadcn-variants/multiselect.js.map +1 -0
- package/dist/presets/shadcn-variants/number.d.ts +31 -0
- package/dist/presets/shadcn-variants/number.d.ts.map +1 -0
- package/dist/presets/shadcn-variants/number.js +64 -0
- package/dist/presets/shadcn-variants/number.js.map +1 -0
- package/dist/presets/shadcn-variants/password.d.ts +195 -0
- package/dist/presets/shadcn-variants/password.d.ts.map +1 -0
- package/dist/presets/shadcn-variants/password.js +296 -0
- package/dist/presets/shadcn-variants/password.js.map +1 -0
- package/dist/presets/shadcn-variants/phone.d.ts +69 -0
- package/dist/presets/shadcn-variants/phone.d.ts.map +1 -0
- package/dist/presets/shadcn-variants/phone.js +308 -0
- package/dist/presets/shadcn-variants/phone.js.map +1 -0
- package/dist/presets/shadcn-variants/radio.d.ts +172 -0
- package/dist/presets/shadcn-variants/radio.d.ts.map +1 -0
- package/dist/presets/shadcn-variants/radio.js +192 -0
- package/dist/presets/shadcn-variants/radio.js.map +1 -0
- package/dist/presets/shadcn-variants/select.d.ts +203 -0
- package/dist/presets/shadcn-variants/select.d.ts.map +1 -0
- package/dist/presets/shadcn-variants/select.js +285 -0
- package/dist/presets/shadcn-variants/select.js.map +1 -0
- package/dist/presets/shadcn-variants/slider.d.ts +131 -0
- package/dist/presets/shadcn-variants/slider.d.ts.map +1 -0
- package/dist/presets/shadcn-variants/slider.js +151 -0
- package/dist/presets/shadcn-variants/slider.js.map +1 -0
- package/dist/presets/shadcn-variants/text.d.ts +155 -0
- package/dist/presets/shadcn-variants/text.d.ts.map +1 -0
- package/dist/presets/shadcn-variants/text.js +98 -0
- package/dist/presets/shadcn-variants/text.js.map +1 -0
- package/dist/presets/shadcn-variants/textarea.d.ts +18 -0
- package/dist/presets/shadcn-variants/textarea.d.ts.map +1 -0
- package/dist/presets/shadcn-variants/textarea.js +24 -0
- package/dist/presets/shadcn-variants/textarea.js.map +1 -0
- package/dist/presets/shadcn-variants/toggle.d.ts +61 -0
- package/dist/presets/shadcn-variants/toggle.d.ts.map +1 -0
- package/dist/presets/shadcn-variants/toggle.js +67 -0
- package/dist/presets/shadcn-variants/toggle.js.map +1 -0
- package/dist/presets/shadcn-variants/treeselect.d.ts +81 -0
- package/dist/presets/shadcn-variants/treeselect.d.ts.map +1 -0
- package/dist/presets/shadcn-variants/treeselect.js +317 -0
- package/dist/presets/shadcn-variants/treeselect.js.map +1 -0
- package/dist/presets/ui/badge.d.ts +10 -0
- package/dist/presets/ui/badge.d.ts.map +1 -0
- package/dist/presets/ui/badge.js +23 -0
- package/dist/presets/ui/badge.js.map +1 -0
- package/dist/presets/ui/button.d.ts +11 -0
- package/dist/presets/ui/button.d.ts.map +1 -0
- package/dist/presets/ui/button.js +34 -0
- package/dist/presets/ui/button.js.map +1 -0
- package/dist/presets/ui/calendar.d.ts +9 -0
- package/dist/presets/ui/calendar.d.ts.map +1 -0
- package/dist/presets/ui/calendar.js +76 -0
- package/dist/presets/ui/calendar.js.map +1 -0
- package/dist/presets/ui/checkbox.d.ts +18 -0
- package/dist/presets/ui/checkbox.d.ts.map +1 -0
- package/dist/presets/ui/checkbox.js +61 -0
- package/dist/presets/ui/checkbox.js.map +1 -0
- package/dist/presets/ui/custom.d.ts +1 -0
- package/dist/presets/ui/custom.d.ts.map +1 -0
- package/dist/presets/ui/custom.js +2 -0
- package/dist/presets/ui/custom.js.map +1 -0
- package/dist/presets/ui/dialog.d.ts +16 -0
- package/dist/presets/ui/dialog.d.ts.map +1 -0
- package/dist/presets/ui/dialog.js +36 -0
- package/dist/presets/ui/dialog.js.map +1 -0
- package/dist/presets/ui/field.d.ts +25 -0
- package/dist/presets/ui/field.d.ts.map +1 -0
- package/dist/presets/ui/field.js +76 -0
- package/dist/presets/ui/field.js.map +1 -0
- package/dist/presets/ui/input-mask.d.ts +34 -0
- package/dist/presets/ui/input-mask.d.ts.map +1 -0
- package/dist/presets/ui/input-mask.js +561 -0
- package/dist/presets/ui/input-mask.js.map +1 -0
- package/dist/presets/ui/input-otp.d.ts +12 -0
- package/dist/presets/ui/input-otp.d.ts.map +1 -0
- package/dist/presets/ui/input-otp.js +22 -0
- package/dist/presets/ui/input-otp.js.map +1 -0
- package/dist/presets/ui/input.d.ts +83 -0
- package/dist/presets/ui/input.d.ts.map +1 -0
- package/dist/presets/ui/input.js +436 -0
- package/dist/presets/ui/input.js.map +1 -0
- package/dist/presets/ui/label.d.ts +5 -0
- package/dist/presets/ui/label.d.ts.map +1 -0
- package/dist/presets/ui/label.js +8 -0
- package/dist/presets/ui/label.js.map +1 -0
- package/dist/presets/ui/number.d.ts +60 -0
- package/dist/presets/ui/number.d.ts.map +1 -0
- package/dist/presets/ui/number.js +1078 -0
- package/dist/presets/ui/number.js.map +1 -0
- package/dist/presets/ui/popover.d.ts +8 -0
- package/dist/presets/ui/popover.d.ts.map +1 -0
- package/dist/presets/ui/popover.js +17 -0
- package/dist/presets/ui/popover.js.map +1 -0
- package/dist/presets/ui/radio-group.d.ts +6 -0
- package/dist/presets/ui/radio-group.d.ts.map +1 -0
- package/dist/presets/ui/radio-group.js +12 -0
- package/dist/presets/ui/radio-group.js.map +1 -0
- package/dist/presets/ui/scroll-area.d.ts +6 -0
- package/dist/presets/ui/scroll-area.d.ts.map +1 -0
- package/dist/presets/ui/scroll-area.js +13 -0
- package/dist/presets/ui/scroll-area.js.map +1 -0
- package/dist/presets/ui/select.d.ts +21 -0
- package/dist/presets/ui/select.d.ts.map +1 -0
- package/dist/presets/ui/select.js +38 -0
- package/dist/presets/ui/select.js.map +1 -0
- package/dist/presets/ui/separator.d.ts +5 -0
- package/dist/presets/ui/separator.d.ts.map +1 -0
- package/dist/presets/ui/separator.js +9 -0
- package/dist/presets/ui/separator.js.map +1 -0
- package/dist/presets/ui/slider.d.ts +5 -0
- package/dist/presets/ui/slider.d.ts.map +1 -0
- package/dist/presets/ui/slider.js +14 -0
- package/dist/presets/ui/slider.js.map +1 -0
- package/dist/presets/ui/switch.d.ts +7 -0
- package/dist/presets/ui/switch.d.ts.map +1 -0
- package/dist/presets/ui/switch.js +9 -0
- package/dist/presets/ui/switch.js.map +1 -0
- package/dist/presets/ui/textarea.d.ts +76 -0
- package/dist/presets/ui/textarea.d.ts.map +1 -0
- package/dist/presets/ui/textarea.js +291 -0
- package/dist/presets/ui/textarea.js.map +1 -0
- package/dist/presets/ui/time-dropdowns.d.ts +58 -0
- package/dist/presets/ui/time-dropdowns.d.ts.map +1 -0
- package/dist/presets/ui/time-dropdowns.js +133 -0
- package/dist/presets/ui/time-dropdowns.js.map +1 -0
- package/{src/schema/adapter.ts → dist/schema/adapter.d.ts} +7 -35
- package/dist/schema/adapter.d.ts.map +1 -0
- package/dist/schema/adapter.js +3 -0
- package/dist/schema/adapter.js.map +1 -0
- package/{src/schema/core.ts → dist/schema/core.d.ts} +17 -117
- package/dist/schema/core.d.ts.map +1 -0
- package/dist/schema/core.js +4 -0
- package/dist/schema/core.js.map +1 -0
- package/dist/schema/field-map.d.ts +1 -0
- package/dist/schema/field-map.d.ts.map +1 -0
- package/dist/schema/field-map.js +2 -0
- package/dist/schema/field-map.js.map +1 -0
- package/{src/schema/field.ts → dist/schema/field.d.ts} +1 -34
- package/dist/schema/field.d.ts.map +1 -0
- package/dist/schema/field.js +4 -0
- package/dist/schema/field.js.map +1 -0
- package/dist/schema/index.d.ts +1 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +2 -0
- package/dist/schema/index.js.map +1 -0
- package/{src/schema/input-field.ts → dist/schema/input-field.d.ts} +6 -43
- package/dist/schema/input-field.d.ts.map +1 -0
- package/dist/schema/input-field.js +3 -0
- package/dist/schema/input-field.js.map +1 -0
- package/dist/schema/presets.d.ts +1 -0
- package/dist/schema/presets.d.ts.map +1 -0
- package/dist/schema/presets.js +2 -0
- package/dist/schema/presets.js.map +1 -0
- package/{src/schema/variant.ts → dist/schema/variant.d.ts} +24 -64
- package/dist/schema/variant.d.ts.map +1 -0
- package/dist/schema/variant.js +3 -0
- package/dist/schema/variant.js.map +1 -0
- package/dist/variants/core/checkbox.d.ts +15 -0
- package/dist/variants/core/checkbox.d.ts.map +1 -0
- package/dist/variants/core/checkbox.js +27 -0
- package/dist/variants/core/checkbox.js.map +1 -0
- package/dist/variants/core/chips.d.ts +3 -0
- package/dist/variants/core/chips.d.ts.map +1 -0
- package/dist/variants/core/chips.js +20 -0
- package/dist/variants/core/chips.js.map +1 -0
- package/dist/variants/core/color.d.ts +3 -0
- package/dist/variants/core/color.d.ts.map +1 -0
- package/dist/variants/core/color.js +14 -0
- package/dist/variants/core/color.js.map +1 -0
- package/dist/variants/core/custom.d.ts +11 -0
- package/dist/variants/core/custom.d.ts.map +1 -0
- package/{src/variants/core/custom.tsx → dist/variants/core/custom.js} +15 -18
- package/dist/variants/core/custom.js.map +1 -0
- package/dist/variants/core/date.d.ts +3 -0
- package/dist/variants/core/date.d.ts.map +1 -0
- package/dist/variants/core/date.js +20 -0
- package/dist/variants/core/date.js.map +1 -0
- package/dist/variants/core/file.d.ts +3 -0
- package/dist/variants/core/file.d.ts.map +1 -0
- package/dist/variants/core/file.js +6 -0
- package/dist/variants/core/file.js.map +1 -0
- package/dist/variants/core/keyvalue.d.ts +3 -0
- package/dist/variants/core/keyvalue.d.ts.map +1 -0
- package/dist/variants/core/keyvalue.js +9 -0
- package/dist/variants/core/keyvalue.js.map +1 -0
- package/dist/variants/core/multiselect.d.ts +11 -0
- package/dist/variants/core/multiselect.d.ts.map +1 -0
- package/dist/variants/core/multiselect.js +15 -0
- package/dist/variants/core/multiselect.js.map +1 -0
- package/dist/variants/core/number.d.ts +38 -0
- package/dist/variants/core/number.d.ts.map +1 -0
- package/dist/variants/core/number.js +62 -0
- package/dist/variants/core/number.js.map +1 -0
- package/dist/variants/core/password.d.ts +11 -0
- package/dist/variants/core/password.d.ts.map +1 -0
- package/dist/variants/core/password.js +29 -0
- package/dist/variants/core/password.js.map +1 -0
- package/dist/variants/core/phone.d.ts +3 -0
- package/dist/variants/core/phone.d.ts.map +1 -0
- package/dist/variants/core/phone.js +14 -0
- package/dist/variants/core/phone.js.map +1 -0
- package/dist/variants/core/radio.d.ts +8 -0
- package/dist/variants/core/radio.d.ts.map +1 -0
- package/dist/variants/core/radio.js +34 -0
- package/dist/variants/core/radio.js.map +1 -0
- package/dist/variants/core/select.d.ts +5 -0
- package/dist/variants/core/select.d.ts.map +1 -0
- package/dist/variants/core/select.js +11 -0
- package/dist/variants/core/select.js.map +1 -0
- package/dist/variants/core/slider.d.ts +19 -0
- package/dist/variants/core/slider.d.ts.map +1 -0
- package/dist/variants/core/slider.js +36 -0
- package/dist/variants/core/slider.js.map +1 -0
- package/dist/variants/core/text.d.ts +38 -0
- package/dist/variants/core/text.d.ts.map +1 -0
- package/{src/variants/core/text.tsx → dist/variants/core/text.js} +4 -56
- package/dist/variants/core/text.js.map +1 -0
- package/dist/variants/core/textarea.d.ts +3 -0
- package/dist/variants/core/textarea.d.ts.map +1 -0
- package/dist/variants/core/textarea.js +20 -0
- package/dist/variants/core/textarea.js.map +1 -0
- package/dist/variants/core/toggle.d.ts +6 -0
- package/dist/variants/core/toggle.d.ts.map +1 -0
- package/dist/variants/core/toggle.js +41 -0
- package/dist/variants/core/toggle.js.map +1 -0
- package/dist/variants/core/treeselect.d.ts +4 -0
- package/dist/variants/core/treeselect.d.ts.map +1 -0
- package/dist/variants/core/treeselect.js +7 -0
- package/dist/variants/core/treeselect.js.map +1 -0
- package/dist/variants/helpers/selection-summary.d.ts +24 -0
- package/dist/variants/helpers/selection-summary.d.ts.map +1 -0
- package/dist/variants/helpers/selection-summary.js +105 -0
- package/dist/variants/helpers/selection-summary.js.map +1 -0
- package/dist/variants/index.d.ts +16 -0
- package/dist/variants/index.d.ts.map +1 -0
- package/{src/variants/index.ts → dist/variants/index.js} +7 -27
- package/dist/variants/index.js.map +1 -0
- package/dist/variants/registry.d.ts +19 -0
- package/dist/variants/registry.d.ts.map +1 -0
- package/dist/variants/registry.js +29 -0
- package/dist/variants/registry.js.map +1 -0
- package/dist/variants/select-shared.d.ts +1 -0
- package/dist/variants/select-shared.d.ts.map +1 -0
- package/dist/variants/select-shared.js +2 -0
- package/dist/variants/select-shared.js.map +1 -0
- package/{src/variants/shared.ts → dist/variants/shared.d.ts} +3 -22
- package/dist/variants/shared.d.ts.map +1 -0
- package/dist/variants/shared.js +3 -0
- package/dist/variants/shared.js.map +1 -0
- package/package.json +5 -5
- package/.scaffold-cache.json +0 -537
- package/src/.scaffold-cache.json +0 -544
- package/src/adapters/axios.ts +0 -117
- package/src/adapters/index.ts +0 -91
- package/src/adapters/inertia.ts +0 -187
- package/src/core/bound/observe-bound-field.ts +0 -172
- package/src/core/bound/wait-for-bound-field.ts +0 -57
- package/src/core/core-root.tsx +0 -72
- package/src/core/core-shell.tsx +0 -44
- package/src/core/errors/index.ts +0 -2
- package/src/core/hooks/use-button.ts +0 -220
- package/src/core/hooks/use-core-utility.ts +0 -0
- package/src/core/hooks/use-field.ts +0 -497
- package/src/core/hooks/use-optional-field.ts +0 -28
- package/src/core/index.ts +0 -0
- package/src/core/registry/binder-registry.ts +0 -82
- package/src/core/test.tsx +0 -17
- package/src/global.d.ts +0 -14
- package/src/input/input-field.tsx +0 -854
- package/src/input/input-layout-graph.ts +0 -230
- package/src/lib/get-global-countries.ts +0 -87
- package/src/lib/utils.ts +0 -6
- package/src/presets/index.ts +0 -0
- package/src/presets/shadcn-preset.ts +0 -0
- package/src/presets/shadcn-variants/checkbox.tsx +0 -849
- package/src/presets/shadcn-variants/chips.tsx +0 -756
- package/src/presets/shadcn-variants/color.tsx +0 -284
- package/src/presets/shadcn-variants/custom.tsx +0 -227
- package/src/presets/shadcn-variants/date.tsx +0 -796
- package/src/presets/shadcn-variants/file.tsx +0 -764
- package/src/presets/shadcn-variants/keyvalue.tsx +0 -556
- package/src/presets/shadcn-variants/multiselect.tsx +0 -1132
- package/src/presets/shadcn-variants/number.tsx +0 -176
- package/src/presets/shadcn-variants/password.tsx +0 -737
- package/src/presets/shadcn-variants/phone.tsx +0 -628
- package/src/presets/shadcn-variants/radio.tsx +0 -578
- package/src/presets/shadcn-variants/select.tsx +0 -956
- package/src/presets/shadcn-variants/slider.tsx +0 -622
- package/src/presets/shadcn-variants/text.tsx +0 -343
- package/src/presets/shadcn-variants/textarea.tsx +0 -66
- package/src/presets/shadcn-variants/toggle.tsx +0 -218
- package/src/presets/shadcn-variants/treeselect.tsx +0 -784
- package/src/presets/ui/badge.tsx +0 -46
- package/src/presets/ui/button.tsx +0 -60
- package/src/presets/ui/calendar.tsx +0 -214
- package/src/presets/ui/checkbox.tsx +0 -115
- package/src/presets/ui/custom.tsx +0 -0
- package/src/presets/ui/dialog.tsx +0 -141
- package/src/presets/ui/field.tsx +0 -246
- package/src/presets/ui/input-mask.tsx +0 -739
- package/src/presets/ui/input-otp.tsx +0 -77
- package/src/presets/ui/input.tsx +0 -1011
- package/src/presets/ui/label.tsx +0 -22
- package/src/presets/ui/number.tsx +0 -1370
- package/src/presets/ui/popover.tsx +0 -46
- package/src/presets/ui/radio-group.tsx +0 -43
- package/src/presets/ui/scroll-area.tsx +0 -56
- package/src/presets/ui/select.tsx +0 -190
- package/src/presets/ui/separator.tsx +0 -28
- package/src/presets/ui/slider.tsx +0 -61
- package/src/presets/ui/switch.tsx +0 -32
- package/src/presets/ui/textarea.tsx +0 -634
- package/src/presets/ui/time-dropdowns.tsx +0 -350
- package/src/schema/field-map.ts +0 -0
- package/src/schema/index.ts +0 -0
- package/src/schema/presets.ts +0 -0
- package/src/variants/core/checkbox.tsx +0 -54
- package/src/variants/core/chips.tsx +0 -22
- package/src/variants/core/color.tsx +0 -16
- package/src/variants/core/date.tsx +0 -25
- package/src/variants/core/file.tsx +0 -9
- package/src/variants/core/keyvalue.tsx +0 -12
- package/src/variants/core/multiselect.tsx +0 -28
- package/src/variants/core/number.tsx +0 -115
- package/src/variants/core/password.tsx +0 -35
- package/src/variants/core/phone.tsx +0 -16
- package/src/variants/core/radio.tsx +0 -38
- package/src/variants/core/select.tsx +0 -15
- package/src/variants/core/slider.tsx +0 -55
- package/src/variants/core/textarea.tsx +0 -22
- package/src/variants/core/toggle.tsx +0 -50
- package/src/variants/core/treeselect.tsx +0 -11
- package/src/variants/helpers/selection-summary.tsx +0 -236
- package/src/variants/registry.ts +0 -38
- package/src/variants/select-shared.ts +0 -0
- package/tsconfig.json +0 -14
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
// src/variants/core/radio.ts
|
|
2
|
-
|
|
3
|
-
import type { VariantModuleFor } from "@/schema/variant";
|
|
4
|
-
import { ShadcnRadioVariant } from "@/presets/shadcn-variants/radio";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Built-in "radio" variant module.
|
|
8
|
-
*
|
|
9
|
-
* Uses the Shadcn-based implementation in presets/shadcn-variants/radio.tsx
|
|
10
|
-
*/
|
|
11
|
-
export const radioVariantModule: VariantModuleFor<"radio"> = {
|
|
12
|
-
variant: "radio",
|
|
13
|
-
// Note: registry-level typing uses unknown, but the component itself is generic.
|
|
14
|
-
Variant: ShadcnRadioVariant as any,
|
|
15
|
-
defaults: {
|
|
16
|
-
layout: {
|
|
17
|
-
// Standard stacked field layout; the smart renderer still
|
|
18
|
-
// handles ordering/relative roots for helpers.
|
|
19
|
-
labelPlacement: "top",
|
|
20
|
-
sublabelPlacement: "right",
|
|
21
|
-
descriptionPlacement: "below",
|
|
22
|
-
helpTextPlacement: "below",
|
|
23
|
-
errorTextPlacement: "below",
|
|
24
|
-
inline: false,
|
|
25
|
-
fullWidth: true,
|
|
26
|
-
|
|
27
|
-
// Explicit layout hints
|
|
28
|
-
defaultSize: "md",
|
|
29
|
-
defaultDensity: "comfortable", // ← uses your FieldDensity union
|
|
30
|
-
},
|
|
31
|
-
},
|
|
32
|
-
meta: {
|
|
33
|
-
label: "Radio group",
|
|
34
|
-
description:
|
|
35
|
-
"Choose one option from a list of mutually exclusive choices.",
|
|
36
|
-
tags: ["choice", "select", "exclusive", "radio"],
|
|
37
|
-
},
|
|
38
|
-
};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import ShadcnSelectVariant, { ShadcnSelectVariantProps } from "@/presets/shadcn-variants/select";
|
|
2
|
-
import { VariantModuleFor } from "@/schema/variant";
|
|
3
|
-
|
|
4
|
-
export type SelectVariantProps = ShadcnSelectVariantProps;
|
|
5
|
-
|
|
6
|
-
export const selectModule: VariantModuleFor<"select"> = {
|
|
7
|
-
variant: "select",
|
|
8
|
-
Variant: ShadcnSelectVariant,
|
|
9
|
-
|
|
10
|
-
meta: {
|
|
11
|
-
label: "Select",
|
|
12
|
-
description: "Single-value dropdown based on Shadcn Select.",
|
|
13
|
-
tags: ["select", "dropdown", "single-value"],
|
|
14
|
-
},
|
|
15
|
-
};
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
// src/variants/core/slider.ts
|
|
2
|
-
|
|
3
|
-
import type { ValidateResult } from "@/schema/input-field";
|
|
4
|
-
import type { ShadcnSliderVariantProps } from "@/presets/shadcn-variants/slider";
|
|
5
|
-
import { ShadcnSliderVariant } from "@/presets/shadcn-variants/slider";
|
|
6
|
-
import { VariantModule } from "@/schema/variant";
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Slider value type:
|
|
10
|
-
* - `number | undefined` for now (single-value slider).
|
|
11
|
-
* If/when you add range support, this can be widened to [number, number].
|
|
12
|
-
*/
|
|
13
|
-
export type SliderValue = number | undefined;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Basic validation:
|
|
18
|
-
* - if required → must have a numeric value
|
|
19
|
-
* - otherwise always OK
|
|
20
|
-
*/
|
|
21
|
-
function validateSlider(
|
|
22
|
-
value: SliderValue,
|
|
23
|
-
ctx: { required?: boolean }
|
|
24
|
-
): ValidateResult {
|
|
25
|
-
if (ctx.required) {
|
|
26
|
-
if (value === undefined || value === null) {
|
|
27
|
-
return "Required.";
|
|
28
|
-
}
|
|
29
|
-
if (typeof value !== "number" || Number.isNaN(value)) {
|
|
30
|
-
return "Invalid number.";
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// You could optionally enforce min/max here using ctx.props
|
|
35
|
-
return true;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Register the slider variant with the global registry.
|
|
40
|
-
*
|
|
41
|
-
* No layout defaults are provided here:
|
|
42
|
-
* - layout (inline vs stacked, label placement, etc.) is controlled by
|
|
43
|
-
* the host via FieldLayoutConfig / InputField overrides instead.
|
|
44
|
-
*/
|
|
45
|
-
export default {
|
|
46
|
-
variant: "slider",
|
|
47
|
-
Variant: ShadcnSliderVariant,
|
|
48
|
-
validate(value, ctx): ValidateResult {
|
|
49
|
-
return validateSlider(value as SliderValue, {
|
|
50
|
-
required: ctx.required,
|
|
51
|
-
});
|
|
52
|
-
},
|
|
53
|
-
} as VariantModule<'slider'>;
|
|
54
|
-
|
|
55
|
-
export type SliderVariantProps = ShadcnSliderVariantProps;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import ShadcnTextareaVariant from "@/presets/shadcn-variants/textarea";
|
|
2
|
-
import { VariantModuleFor } from "@/schema/variant";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export const textareaVariant: VariantModuleFor<"textarea"> = {
|
|
6
|
-
variant: "textarea",
|
|
7
|
-
Variant: ShadcnTextareaVariant as any,
|
|
8
|
-
// Optional layout defaults – tweak as you like
|
|
9
|
-
defaults: {
|
|
10
|
-
layout: {
|
|
11
|
-
fullWidth: true,
|
|
12
|
-
// You can set defaultSize/defaultDensity here if you want:
|
|
13
|
-
// defaultSize: "md",
|
|
14
|
-
// defaultDensity: "normal",
|
|
15
|
-
},
|
|
16
|
-
},
|
|
17
|
-
meta: {
|
|
18
|
-
label: "Textarea",
|
|
19
|
-
description: "Multi-line text input area.",
|
|
20
|
-
tags: ["text", "multiline", "comments", "notes"],
|
|
21
|
-
},
|
|
22
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
// src/variants/core/toggle.ts
|
|
2
|
-
|
|
3
|
-
import type { VariantModuleFor } from "@/schema/variant";
|
|
4
|
-
import type { FieldLayoutConfig } from "@/schema/input-field";
|
|
5
|
-
import ShadcnToggleVariant from "@/presets/shadcn-variants/toggle";
|
|
6
|
-
|
|
7
|
-
export const toggleLayoutDefaults: FieldLayoutConfig = {
|
|
8
|
-
// Render label + control in a single row
|
|
9
|
-
inline: true,
|
|
10
|
-
|
|
11
|
-
// Semantically: label is to the "right" of the control for this variant.
|
|
12
|
-
// (Your InputField can use this to decide macro-level positioning.)
|
|
13
|
-
labelPlacement: "right",
|
|
14
|
-
|
|
15
|
-
// Attach all helpers to the label root by default.
|
|
16
|
-
// Sublabel will still use its own placement (default: "right"),
|
|
17
|
-
// but it's logically anchored to the label block.
|
|
18
|
-
relativeRoots: {
|
|
19
|
-
sublabel: "label",
|
|
20
|
-
description: "label",
|
|
21
|
-
helpText: "label",
|
|
22
|
-
errorText: "label",
|
|
23
|
-
},
|
|
24
|
-
|
|
25
|
-
fullWidth: false,
|
|
26
|
-
|
|
27
|
-
// Within the label root, show error first, then description, then help,
|
|
28
|
-
// then sublabel (all still respecting their individual placements).
|
|
29
|
-
ordering: {
|
|
30
|
-
label: ["errorText", "description", "helpText", "sublabel"],
|
|
31
|
-
// For this variant we don't really use input-root helpers,
|
|
32
|
-
// but we keep the key for completeness.
|
|
33
|
-
input: [],
|
|
34
|
-
},
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
export const ToggleVariantModule: VariantModuleFor<"toggle"> = {
|
|
38
|
-
variant: "toggle",
|
|
39
|
-
Variant: ShadcnToggleVariant as any,
|
|
40
|
-
defaults: {
|
|
41
|
-
layout: toggleLayoutDefaults,
|
|
42
|
-
},
|
|
43
|
-
meta: {
|
|
44
|
-
label: "Toggle",
|
|
45
|
-
description: "Boolean on/off switch",
|
|
46
|
-
tags: ["boolean", "toggle", "switch"],
|
|
47
|
-
},
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
export default ToggleVariantModule;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import ShadcnTreeSelectVariant from "@/presets/shadcn-variants/treeselect";
|
|
2
|
-
import { VariantModule } from "@/schema/variant";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const treeselectModule: VariantModule<'treeselect'> = {
|
|
7
|
-
variant: 'treeselect',
|
|
8
|
-
Variant: ShadcnTreeSelectVariant as any
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export default treeselectModule
|
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { X } from "lucide-react";
|
|
3
|
-
import { cn } from "@/lib/utils";
|
|
4
|
-
import {
|
|
5
|
-
Popover,
|
|
6
|
-
PopoverTrigger,
|
|
7
|
-
PopoverContent,
|
|
8
|
-
} from "@/presets/ui/popover";
|
|
9
|
-
|
|
10
|
-
type NormalizedMultiItem = {
|
|
11
|
-
key: string;
|
|
12
|
-
value: string | number;
|
|
13
|
-
labelNode: React.ReactNode;
|
|
14
|
-
labelText: string; // Used for width calculation
|
|
15
|
-
disabled?: boolean;
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
export interface SelectionSummaryProps {
|
|
19
|
-
selectedItems: NormalizedMultiItem[];
|
|
20
|
-
placeholder?: React.ReactNode;
|
|
21
|
-
onRemoveValue?: (value: NormalizedMultiItem) => void;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Helper: Measure text width using a canvas.
|
|
26
|
-
* Much faster than rendering hidden DOM elements.
|
|
27
|
-
*/
|
|
28
|
-
function getTextWidth(text: string, font: string) {
|
|
29
|
-
if (typeof window === "undefined") return 0;
|
|
30
|
-
const canvas =
|
|
31
|
-
(window as any).__canvas ||
|
|
32
|
-
((window as any).__canvas = document.createElement("canvas"));
|
|
33
|
-
const context = canvas.getContext("2d");
|
|
34
|
-
context.font = font;
|
|
35
|
-
const metrics = context.measureText(text);
|
|
36
|
-
return metrics.width;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export const SelectionSummary: React.FC<SelectionSummaryProps> = ({
|
|
40
|
-
selectedItems,
|
|
41
|
-
placeholder,
|
|
42
|
-
onRemoveValue,
|
|
43
|
-
}) => {
|
|
44
|
-
const containerRef = React.useRef<HTMLSpanElement | null>(null);
|
|
45
|
-
const [visibleCount, setVisibleCount] = React.useState(0);
|
|
46
|
-
const [moreOpen, setMoreOpen] = React.useState(false);
|
|
47
|
-
|
|
48
|
-
// Measure available width and calculate how many items fit
|
|
49
|
-
React.useLayoutEffect(() => {
|
|
50
|
-
const el = containerRef.current;
|
|
51
|
-
if (!el) return;
|
|
52
|
-
|
|
53
|
-
const computeVisibleItems = () => {
|
|
54
|
-
const containerWidth = el.clientWidth;
|
|
55
|
-
|
|
56
|
-
// 1. Get current font styles to ensure accurate measurement
|
|
57
|
-
const computedStyle = window.getComputedStyle(el);
|
|
58
|
-
const font = `${computedStyle.fontWeight} ${computedStyle.fontSize} ${computedStyle.fontFamily}`;
|
|
59
|
-
|
|
60
|
-
// 2. Calculate the "Buffer" (12 characters width)
|
|
61
|
-
// This is the space reserved for the "+ N more" trigger if truncation happens.
|
|
62
|
-
// We use 'M' or '0' as an average widest character approximation, or a standard string.
|
|
63
|
-
const bufferWidth = getTextWidth("000000000000", font);
|
|
64
|
-
|
|
65
|
-
// 3. Width of the separator (e.g., ", ")
|
|
66
|
-
const commaWidth = getTextWidth(", ", font);
|
|
67
|
-
|
|
68
|
-
let usedWidth = 0;
|
|
69
|
-
let count = 0;
|
|
70
|
-
const totalItems = selectedItems.length;
|
|
71
|
-
|
|
72
|
-
for (let i = 0; i < totalItems; i++) {
|
|
73
|
-
const item = selectedItems[i];
|
|
74
|
-
const itemWidth = getTextWidth(item.labelText, font);
|
|
75
|
-
|
|
76
|
-
// Is this the very last item in the entire list?
|
|
77
|
-
const isLastItem = i === totalItems - 1;
|
|
78
|
-
|
|
79
|
-
// If it's the last item, we don't need the buffer space.
|
|
80
|
-
// If it's NOT the last item, we must ensure we have space for this item AND the buffer.
|
|
81
|
-
// (Because if we can't fit the *next* item, we'll need the buffer to show the badge).
|
|
82
|
-
const spaceNeeded = isLastItem
|
|
83
|
-
? itemWidth
|
|
84
|
-
: itemWidth + commaWidth + bufferWidth;
|
|
85
|
-
|
|
86
|
-
if (usedWidth + spaceNeeded <= containerWidth) {
|
|
87
|
-
usedWidth += itemWidth + commaWidth;
|
|
88
|
-
count++;
|
|
89
|
-
} else {
|
|
90
|
-
// No more space
|
|
91
|
-
break;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// Ensure we show at least 1 item if there are items,
|
|
96
|
-
// unless even the first item is wider than the container (then CSS truncation handles it).
|
|
97
|
-
setVisibleCount(Math.max(1, count));
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
computeVisibleItems();
|
|
101
|
-
|
|
102
|
-
const ro = new ResizeObserver(computeVisibleItems);
|
|
103
|
-
ro.observe(el);
|
|
104
|
-
return () => ro.disconnect();
|
|
105
|
-
}, [selectedItems, selectedItems.length]); // Re-run if items change
|
|
106
|
-
|
|
107
|
-
const totalCount = selectedItems.length;
|
|
108
|
-
|
|
109
|
-
if (!totalCount) {
|
|
110
|
-
return (
|
|
111
|
-
<span ref={containerRef} className="truncate text-muted-foreground w-full block">
|
|
112
|
-
{placeholder ?? "Select options…"}
|
|
113
|
-
</span>
|
|
114
|
-
);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
const visibleItems = selectedItems.slice(0, visibleCount);
|
|
118
|
-
// If visible count covers everything, overflow is 0
|
|
119
|
-
const overflowCount = totalCount - visibleItems.length;
|
|
120
|
-
|
|
121
|
-
// Safety check: if our calculation says we can show X, but X < Total,
|
|
122
|
-
// strictly ensure we render the "More" chip.
|
|
123
|
-
// If calculation resulted in showing all items, overflow is 0.
|
|
124
|
-
const showMore = overflowCount > 0;
|
|
125
|
-
|
|
126
|
-
const handleRemove = (value: NormalizedMultiItem) => {
|
|
127
|
-
if (!onRemoveValue) return;
|
|
128
|
-
onRemoveValue(value);
|
|
129
|
-
};
|
|
130
|
-
|
|
131
|
-
return (
|
|
132
|
-
<span
|
|
133
|
-
ref={containerRef}
|
|
134
|
-
className="flex items-center w-full overflow-hidden whitespace-nowrap"
|
|
135
|
-
>
|
|
136
|
-
{/* Render Visible Items */}
|
|
137
|
-
{visibleItems.map((item, index) => (
|
|
138
|
-
<React.Fragment key={item.key}>
|
|
139
|
-
<span className="truncate flex-shrink-0">
|
|
140
|
-
{item.labelNode}
|
|
141
|
-
</span>
|
|
142
|
-
{/* Add comma if it's not the last visible item */}
|
|
143
|
-
{index < visibleItems.length - 1 && (
|
|
144
|
-
<span className="text-muted-foreground mr-1">,</span>
|
|
145
|
-
)}
|
|
146
|
-
</React.Fragment>
|
|
147
|
-
))}
|
|
148
|
-
|
|
149
|
-
{/* Render Separator before "More" if needed */}
|
|
150
|
-
{showMore && (
|
|
151
|
-
<span className="text-muted-foreground mr-1">,</span>
|
|
152
|
-
)}
|
|
153
|
-
|
|
154
|
-
{/* Render "+N more" Chip */}
|
|
155
|
-
{showMore && (
|
|
156
|
-
<Popover open={moreOpen} onOpenChange={setMoreOpen}>
|
|
157
|
-
<PopoverTrigger asChild>
|
|
158
|
-
<button
|
|
159
|
-
type="button"
|
|
160
|
-
className="inline-flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground underline underline-offset-2 flex-shrink-0"
|
|
161
|
-
onClick={(e) => e.stopPropagation()}
|
|
162
|
-
>
|
|
163
|
-
+{overflowCount} more
|
|
164
|
-
</button>
|
|
165
|
-
</PopoverTrigger>
|
|
166
|
-
<PopoverContent
|
|
167
|
-
align="start"
|
|
168
|
-
className="w-56 max-h-64 overflow-y-auto p-2 text-sm"
|
|
169
|
-
onClick={(e) => e.stopPropagation()}
|
|
170
|
-
>
|
|
171
|
-
<div className="flex items-center justify-between mb-1">
|
|
172
|
-
<span className="font-medium text-xs text-muted-foreground">
|
|
173
|
-
Selected ({totalCount})
|
|
174
|
-
</span>
|
|
175
|
-
<button
|
|
176
|
-
type="button"
|
|
177
|
-
className="p-1 rounded hover:bg-muted"
|
|
178
|
-
onClick={() => setMoreOpen(false)}
|
|
179
|
-
>
|
|
180
|
-
<X className="h-3 w-3" />
|
|
181
|
-
</button>
|
|
182
|
-
</div>
|
|
183
|
-
|
|
184
|
-
<div className="space-y-1">
|
|
185
|
-
{selectedItems.map((item) => (
|
|
186
|
-
<div
|
|
187
|
-
key={item.key}
|
|
188
|
-
className={cn(
|
|
189
|
-
"flex items-center justify-between gap-2 rounded px-2 py-1",
|
|
190
|
-
"bg-muted/40"
|
|
191
|
-
)}
|
|
192
|
-
>
|
|
193
|
-
<span className="truncate">{item.labelNode}</span>
|
|
194
|
-
{onRemoveValue && (
|
|
195
|
-
<button
|
|
196
|
-
type="button"
|
|
197
|
-
className="flex h-4 w-4 shrink-0 items-center justify-center rounded hover:bg-muted text-muted-foreground hover:text-foreground"
|
|
198
|
-
onClick={(e) => {
|
|
199
|
-
e.stopPropagation();
|
|
200
|
-
handleRemove(item);
|
|
201
|
-
}}
|
|
202
|
-
>
|
|
203
|
-
<X className="h-3 w-3" />
|
|
204
|
-
</button>
|
|
205
|
-
)}
|
|
206
|
-
</div>
|
|
207
|
-
))}
|
|
208
|
-
</div>
|
|
209
|
-
</PopoverContent>
|
|
210
|
-
</Popover>
|
|
211
|
-
)}
|
|
212
|
-
</span>
|
|
213
|
-
);
|
|
214
|
-
};
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
// src/variants/select-utils.ts (or wherever you keep small helpers)
|
|
218
|
-
|
|
219
|
-
export type SelectPrimitive = string | number;
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
* Remove a single value from a selection array.
|
|
223
|
-
*
|
|
224
|
-
* - Works even if the selection is undefined/null.
|
|
225
|
-
* - Compares using String() so "1" and 1 are treated consistently.
|
|
226
|
-
*/
|
|
227
|
-
export function removeSelectValue<T extends SelectPrimitive>(
|
|
228
|
-
current: readonly T[] | undefined | null,
|
|
229
|
-
valueToRemove: T
|
|
230
|
-
): T[] {
|
|
231
|
-
if (!current || current.length === 0) return [];
|
|
232
|
-
|
|
233
|
-
const target = String(valueToRemove);
|
|
234
|
-
|
|
235
|
-
return current.filter((v) => String(v) !== target);
|
|
236
|
-
}
|
package/src/variants/registry.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
// src/variants/registry.ts
|
|
2
|
-
|
|
3
|
-
import type { VariantKey, VariantModule } from "@/schema/variant";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Internal storage for registered variants.
|
|
7
|
-
*/
|
|
8
|
-
const registry = new Map<VariantKey, VariantModule<any>>();
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Register (or overwrite) a variant module.
|
|
12
|
-
*
|
|
13
|
-
* Typically called from presets, e.g.:
|
|
14
|
-
*
|
|
15
|
-
* registerVariant(textVariant);
|
|
16
|
-
* registerVariant(numberVariant);
|
|
17
|
-
*/
|
|
18
|
-
export function registerVariant<K extends VariantKey>(
|
|
19
|
-
module: VariantModule<K>
|
|
20
|
-
): void {
|
|
21
|
-
registry.set(module.variant, module as VariantModule<any>);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Look up a variant module by key.
|
|
26
|
-
*/
|
|
27
|
-
export function getVariant<K extends VariantKey>(
|
|
28
|
-
key: K
|
|
29
|
-
): VariantModule<K> | undefined {
|
|
30
|
-
return registry.get(key) as VariantModule<K> | undefined;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* List all registered variant modules.
|
|
35
|
-
*/
|
|
36
|
-
export function listVariants(): VariantModule<VariantKey>[] {
|
|
37
|
-
return Array.from(registry.values()) as VariantModule<VariantKey>[];
|
|
38
|
-
}
|
|
File without changes
|
package/tsconfig.json
DELETED