@charpente-ui/vue 1.0.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -81,12 +81,13 @@ The button can change its HTML tag while keeping its behavior.
81
81
 
82
82
  ## Components
83
83
 
84
- | Name | Status | Tag |
85
- |----------|--------|-------------|
86
- | Button | Ready | `CButton` |
87
- | Checkbox | Ready | `CCheckbox` |
88
- | Input | Ready | `CInput` |
89
- | Label | Ready | `CLabel` |
90
- | Radio | Ready | `CRadio` |
91
- | Select | Ready | `CSelect` |
92
- | Textarea | Ready | `CTextarea` |
84
+ | Name | Core Logic | Tag | Status |
85
+ |----------|----------------------------------------------------------------------------------|-------------|--------|
86
+ | Button | **Polymorphic:** Switches tags _(a, button, etc...)_ while keeping logic. | `CButton` | Ready |
87
+ | Checkbox | **Smart Toggle:** Handles array state and booleans natively. | `CCheckbox` | Ready |
88
+ | Form | **Auto-Submit:** Integrated `preventDefault` and event handling. | `CForm` | Ready |
89
+ | Input | **Auto-ID:** Auto-links to labels via `useId()` and full attributes inheritance. | `CInput` | Ready |
90
+ | Label | **Context-Aware:** Simple, accessible binding for any input. | `CLabel` | Ready |
91
+ | Radio | **Selection:** Minimalist wrapper for native radio input. | `CRadio` | Ready |
92
+ | Select | **Native Wrapper:** Easy option management without the boilerplate. | `CSelect` | Ready |
93
+ | Textarea | **Flexible Binding:** Auto-ID and reactive model management. | `CTextarea` | Ready |
package/dist/charpente.js CHANGED
@@ -1,19 +1,19 @@
1
- import { defineComponent as n, openBlock as u, createBlock as V, resolveDynamicComponent as h, normalizeProps as B, guardReactiveProps as C, withCtx as M, renderSlot as f, useModel as m, useAttrs as c, computed as p, useId as v, withDirectives as _, createElementBlock as d, mergeProps as i, vModelCheckbox as b, mergeModels as $, vModelDynamic as x, vModelRadio as A, vModelSelect as k, vModelText as I } from "vue";
2
- const T = /* @__PURE__ */ n({
1
+ import { defineComponent as n, openBlock as u, createBlock as h, resolveDynamicComponent as V, normalizeProps as B, guardReactiveProps as C, withCtx as b, renderSlot as v, useModel as _, useAttrs as m, computed as c, useId as p, withDirectives as f, createElementBlock as d, mergeProps as i, vModelCheckbox as M, mergeModels as $, withModifiers as A, vModelDynamic as I, vModelRadio as k, vModelSelect as x, vModelText as y } from "vue";
2
+ const L = /* @__PURE__ */ n({
3
3
  inheritAttrs: !1,
4
4
  __name: "BaseButton",
5
5
  props: {
6
6
  as: { default: "button" }
7
7
  },
8
8
  setup(t) {
9
- return (e, o) => (u(), V(h(t.as), B(C(e.$attrs)), {
10
- default: M(() => [
11
- f(e.$slots, "default")
9
+ return (e, o) => (u(), h(V(t.as), B(C(e.$attrs)), {
10
+ default: b(() => [
11
+ v(e.$slots, "default")
12
12
  ]),
13
13
  _: 3
14
14
  }, 16));
15
15
  }
16
- }), y = ["id", "value"], w = /* @__PURE__ */ n({
16
+ }), S = ["id", "value"], z = /* @__PURE__ */ n({
17
17
  inheritAttrs: !1,
18
18
  __name: "BaseCheckbox",
19
19
  props: /* @__PURE__ */ $({
@@ -24,16 +24,31 @@ const T = /* @__PURE__ */ n({
24
24
  }),
25
25
  emits: ["update:modelValue"],
26
26
  setup(t) {
27
- const e = m(t, "modelValue"), o = c(), s = p(() => o.id || v());
28
- return (l, a) => _((u(), d("input", i({ type: "checkbox" }, l.$attrs, {
29
- "onUpdate:modelValue": a[0] || (a[0] = (r) => e.value = r),
30
- id: s.value,
27
+ const e = _(t, "modelValue"), o = m(), l = c(() => o.id || p());
28
+ return (r, s) => f((u(), d("input", i({ type: "checkbox" }, r.$attrs, {
29
+ "onUpdate:modelValue": s[0] || (s[0] = (a) => e.value = a),
30
+ id: l.value,
31
31
  value: t.value
32
- }), null, 16, y)), [
33
- [b, e.value]
32
+ }), null, 16, S)), [
33
+ [M, e.value]
34
34
  ]);
35
35
  }
36
- }), U = ["id"], L = /* @__PURE__ */ n({
36
+ }), U = ["id"], E = /* @__PURE__ */ n({
37
+ inheritAttrs: !1,
38
+ __name: "BaseForm",
39
+ emits: ["submit"],
40
+ setup(t, { emit: e }) {
41
+ const o = m(), l = e, r = (a) => {
42
+ l("submit", a);
43
+ }, s = c(() => o.id || p());
44
+ return (a, T) => (u(), d("form", i(a.$attrs, {
45
+ id: s.value,
46
+ onSubmit: A(r, ["prevent"])
47
+ }), [
48
+ v(a.$slots, "default")
49
+ ], 16, U));
50
+ }
51
+ }), R = ["id"], j = /* @__PURE__ */ n({
37
52
  inheritAttrs: !1,
38
53
  __name: "BaseInput",
39
54
  props: {
@@ -42,15 +57,15 @@ const T = /* @__PURE__ */ n({
42
57
  },
43
58
  emits: ["update:modelValue"],
44
59
  setup(t) {
45
- const e = m(t, "modelValue"), o = c(), s = p(() => o.id || v());
46
- return (l, a) => _((u(), d("input", i(l.$attrs, {
47
- "onUpdate:modelValue": a[0] || (a[0] = (r) => e.value = r),
48
- id: s.value
49
- }), null, 16, U)), [
50
- [x, e.value]
60
+ const e = _(t, "modelValue"), o = m(), l = c(() => o.id || p());
61
+ return (r, s) => f((u(), d("input", i(r.$attrs, {
62
+ "onUpdate:modelValue": s[0] || (s[0] = (a) => e.value = a),
63
+ id: l.value
64
+ }), null, 16, R)), [
65
+ [I, e.value]
51
66
  ]);
52
67
  }
53
- }), R = ["for"], z = /* @__PURE__ */ n({
68
+ }), g = ["for"], q = /* @__PURE__ */ n({
54
69
  inheritAttrs: !1,
55
70
  __name: "BaseLabel",
56
71
  props: {
@@ -58,13 +73,13 @@ const T = /* @__PURE__ */ n({
58
73
  },
59
74
  setup(t) {
60
75
  const e = t;
61
- return (o, s) => (u(), d("label", i(o.$attrs, {
76
+ return (o, l) => (u(), d("label", i(o.$attrs, {
62
77
  for: e.for
63
78
  }), [
64
- f(o.$slots, "default")
65
- ], 16, R));
79
+ v(o.$slots, "default")
80
+ ], 16, g));
66
81
  }
67
- }), S = ["id", "value"], E = /* @__PURE__ */ n({
82
+ }), w = ["id", "value"], G = /* @__PURE__ */ n({
68
83
  inheritAttrs: !1,
69
84
  __name: "BaseRadio",
70
85
  props: /* @__PURE__ */ $({
@@ -75,16 +90,16 @@ const T = /* @__PURE__ */ n({
75
90
  }),
76
91
  emits: ["update:modelValue"],
77
92
  setup(t) {
78
- const e = m(t, "modelValue"), o = c(), s = p(() => o.id || v());
79
- return (l, a) => _((u(), d("input", i({ type: "radio" }, l.$attrs, {
80
- "onUpdate:modelValue": a[0] || (a[0] = (r) => e.value = r),
81
- id: s.value,
93
+ const e = _(t, "modelValue"), o = m(), l = c(() => o.id || p());
94
+ return (r, s) => f((u(), d("input", i({ type: "radio" }, r.$attrs, {
95
+ "onUpdate:modelValue": s[0] || (s[0] = (a) => e.value = a),
96
+ id: l.value,
82
97
  value: t.value
83
- }), null, 16, S)), [
84
- [A, e.value]
98
+ }), null, 16, w)), [
99
+ [k, e.value]
85
100
  ]);
86
101
  }
87
- }), g = ["id"], j = /* @__PURE__ */ n({
102
+ }), D = ["id"], H = /* @__PURE__ */ n({
88
103
  inheritAttrs: !1,
89
104
  __name: "BaseSelect",
90
105
  props: {
@@ -93,17 +108,17 @@ const T = /* @__PURE__ */ n({
93
108
  },
94
109
  emits: ["update:modelValue"],
95
110
  setup(t) {
96
- const e = m(t, "modelValue"), o = c(), s = p(() => o.id || v());
97
- return (l, a) => _((u(), d("select", i(l.$attrs, {
98
- "onUpdate:modelValue": a[0] || (a[0] = (r) => e.value = r),
99
- id: s.value
111
+ const e = _(t, "modelValue"), o = m(), l = c(() => o.id || p());
112
+ return (r, s) => f((u(), d("select", i(r.$attrs, {
113
+ "onUpdate:modelValue": s[0] || (s[0] = (a) => e.value = a),
114
+ id: l.value
100
115
  }), [
101
- f(l.$slots, "default")
102
- ], 16, g)), [
103
- [k, e.value]
116
+ v(r.$slots, "default")
117
+ ], 16, D)), [
118
+ [x, e.value]
104
119
  ]);
105
120
  }
106
- }), D = ["id"], q = /* @__PURE__ */ n({
121
+ }), P = ["id"], J = /* @__PURE__ */ n({
107
122
  inheritAttrs: !1,
108
123
  __name: "BaseTextarea",
109
124
  props: {
@@ -112,21 +127,22 @@ const T = /* @__PURE__ */ n({
112
127
  },
113
128
  emits: ["update:modelValue"],
114
129
  setup(t) {
115
- const e = m(t, "modelValue"), o = c(), s = p(() => o.id || v());
116
- return (l, a) => _((u(), d("textarea", i(l.$attrs, {
117
- "onUpdate:modelValue": a[0] || (a[0] = (r) => e.value = r),
118
- id: s.value
119
- }), null, 16, D)), [
120
- [I, e.value]
130
+ const e = _(t, "modelValue"), o = m(), l = c(() => o.id || p());
131
+ return (r, s) => f((u(), d("textarea", i(r.$attrs, {
132
+ "onUpdate:modelValue": s[0] || (s[0] = (a) => e.value = a),
133
+ id: l.value
134
+ }), null, 16, P)), [
135
+ [y, e.value]
121
136
  ]);
122
137
  }
123
138
  });
124
139
  export {
125
- T as CButton,
126
- w as CCheckbox,
127
- L as CInput,
128
- z as CLabel,
129
- E as CRadio,
130
- j as CSelect,
131
- q as CTextarea
140
+ L as CButton,
141
+ z as CCheckbox,
142
+ E as CForm,
143
+ j as CInput,
144
+ q as CLabel,
145
+ G as CRadio,
146
+ H as CSelect,
147
+ J as CTextarea
132
148
  };
@@ -1 +1 @@
1
- (function(n,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(n=typeof globalThis<"u"?globalThis:n||self,e(n.Charpente={},n.Vue))})(this,(function(n,e){"use strict";const i=e.defineComponent({inheritAttrs:!1,__name:"BaseButton",props:{as:{default:"button"}},setup(o){return(t,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.as),e.normalizeProps(e.guardReactiveProps(t.$attrs)),{default:e.withCtx(()=>[e.renderSlot(t.$slots,"default")]),_:3},16))}}),m=["id","value"],c=e.defineComponent({inheritAttrs:!1,__name:"BaseCheckbox",props:e.mergeModels({value:{}},{modelValue:{type:[Boolean,Array]},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=e.useModel(o,"modelValue"),s=e.useAttrs(),r=e.computed(()=>s.id||e.useId());return(a,l)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",e.mergeProps({type:"checkbox"},a.$attrs,{"onUpdate:modelValue":l[0]||(l[0]=d=>t.value=d),id:r.value,value:o.value}),null,16,m)),[[e.vModelCheckbox,t.value]])}}),p=["id"],u=e.defineComponent({inheritAttrs:!1,__name:"BaseInput",props:{modelValue:{},modelModifiers:{}},emits:["update:modelValue"],setup(o){const t=e.useModel(o,"modelValue"),s=e.useAttrs(),r=e.computed(()=>s.id||e.useId());return(a,l)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",e.mergeProps(a.$attrs,{"onUpdate:modelValue":l[0]||(l[0]=d=>t.value=d),id:r.value}),null,16,p)),[[e.vModelDynamic,t.value]])}}),f=["for"],_=e.defineComponent({inheritAttrs:!1,__name:"BaseLabel",props:{for:{}},setup(o){const t=o;return(s,r)=>(e.openBlock(),e.createElementBlock("label",e.mergeProps(s.$attrs,{for:t.for}),[e.renderSlot(s.$slots,"default")],16,f))}}),h=["id","value"],B=e.defineComponent({inheritAttrs:!1,__name:"BaseRadio",props:e.mergeModels({value:{}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=e.useModel(o,"modelValue"),s=e.useAttrs(),r=e.computed(()=>s.id||e.useId());return(a,l)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",e.mergeProps({type:"radio"},a.$attrs,{"onUpdate:modelValue":l[0]||(l[0]=d=>t.value=d),id:r.value,value:o.value}),null,16,h)),[[e.vModelRadio,t.value]])}}),V=["id"],$=e.defineComponent({inheritAttrs:!1,__name:"BaseSelect",props:{modelValue:{},modelModifiers:{}},emits:["update:modelValue"],setup(o){const t=e.useModel(o,"modelValue"),s=e.useAttrs(),r=e.computed(()=>s.id||e.useId());return(a,l)=>e.withDirectives((e.openBlock(),e.createElementBlock("select",e.mergeProps(a.$attrs,{"onUpdate:modelValue":l[0]||(l[0]=d=>t.value=d),id:r.value}),[e.renderSlot(a.$slots,"default")],16,V)),[[e.vModelSelect,t.value]])}}),C=["id"],k=e.defineComponent({inheritAttrs:!1,__name:"BaseTextarea",props:{modelValue:{},modelModifiers:{}},emits:["update:modelValue"],setup(o){const t=e.useModel(o,"modelValue"),s=e.useAttrs(),r=e.computed(()=>s.id||e.useId());return(a,l)=>e.withDirectives((e.openBlock(),e.createElementBlock("textarea",e.mergeProps(a.$attrs,{"onUpdate:modelValue":l[0]||(l[0]=d=>t.value=d),id:r.value}),null,16,C)),[[e.vModelText,t.value]])}});n.CButton=i,n.CCheckbox=c,n.CInput=u,n.CLabel=_,n.CRadio=B,n.CSelect=$,n.CTextarea=k,Object.defineProperty(n,Symbol.toStringTag,{value:"Module"})}));
1
+ (function(l,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(l=typeof globalThis<"u"?globalThis:l||self,e(l.Charpente={},l.Vue))})(this,(function(l,e){"use strict";const i=e.defineComponent({inheritAttrs:!1,__name:"BaseButton",props:{as:{default:"button"}},setup(o){return(t,n)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.as),e.normalizeProps(e.guardReactiveProps(t.$attrs)),{default:e.withCtx(()=>[e.renderSlot(t.$slots,"default")]),_:3},16))}}),m=["id","value"],c=e.defineComponent({inheritAttrs:!1,__name:"BaseCheckbox",props:e.mergeModels({value:{}},{modelValue:{type:[Boolean,Array]},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=e.useModel(o,"modelValue"),n=e.useAttrs(),a=e.computed(()=>n.id||e.useId());return(d,s)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",e.mergeProps({type:"checkbox"},d.$attrs,{"onUpdate:modelValue":s[0]||(s[0]=r=>t.value=r),id:a.value,value:o.value}),null,16,m)),[[e.vModelCheckbox,t.value]])}}),p=["id"],u=e.defineComponent({inheritAttrs:!1,__name:"BaseForm",emits:["submit"],setup(o,{emit:t}){const n=e.useAttrs(),a=t,d=r=>{a("submit",r)},s=e.computed(()=>n.id||e.useId());return(r,A)=>(e.openBlock(),e.createElementBlock("form",e.mergeProps(r.$attrs,{id:s.value,onSubmit:e.withModifiers(d,["prevent"])}),[e.renderSlot(r.$slots,"default")],16,p))}}),f=["id"],_=e.defineComponent({inheritAttrs:!1,__name:"BaseInput",props:{modelValue:{},modelModifiers:{}},emits:["update:modelValue"],setup(o){const t=e.useModel(o,"modelValue"),n=e.useAttrs(),a=e.computed(()=>n.id||e.useId());return(d,s)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",e.mergeProps(d.$attrs,{"onUpdate:modelValue":s[0]||(s[0]=r=>t.value=r),id:a.value}),null,16,f)),[[e.vModelDynamic,t.value]])}}),h=["for"],B=e.defineComponent({inheritAttrs:!1,__name:"BaseLabel",props:{for:{}},setup(o){const t=o;return(n,a)=>(e.openBlock(),e.createElementBlock("label",e.mergeProps(n.$attrs,{for:t.for}),[e.renderSlot(n.$slots,"default")],16,h))}}),$=["id","value"],C=e.defineComponent({inheritAttrs:!1,__name:"BaseRadio",props:e.mergeModels({value:{}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=e.useModel(o,"modelValue"),n=e.useAttrs(),a=e.computed(()=>n.id||e.useId());return(d,s)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",e.mergeProps({type:"radio"},d.$attrs,{"onUpdate:modelValue":s[0]||(s[0]=r=>t.value=r),id:a.value,value:o.value}),null,16,$)),[[e.vModelRadio,t.value]])}}),k=["id"],V=e.defineComponent({inheritAttrs:!1,__name:"BaseSelect",props:{modelValue:{},modelModifiers:{}},emits:["update:modelValue"],setup(o){const t=e.useModel(o,"modelValue"),n=e.useAttrs(),a=e.computed(()=>n.id||e.useId());return(d,s)=>e.withDirectives((e.openBlock(),e.createElementBlock("select",e.mergeProps(d.$attrs,{"onUpdate:modelValue":s[0]||(s[0]=r=>t.value=r),id:a.value}),[e.renderSlot(d.$slots,"default")],16,k)),[[e.vModelSelect,t.value]])}}),M=["id"],b=e.defineComponent({inheritAttrs:!1,__name:"BaseTextarea",props:{modelValue:{},modelModifiers:{}},emits:["update:modelValue"],setup(o){const t=e.useModel(o,"modelValue"),n=e.useAttrs(),a=e.computed(()=>n.id||e.useId());return(d,s)=>e.withDirectives((e.openBlock(),e.createElementBlock("textarea",e.mergeProps(d.$attrs,{"onUpdate:modelValue":s[0]||(s[0]=r=>t.value=r),id:a.value}),null,16,M)),[[e.vModelText,t.value]])}});l.CButton=i,l.CCheckbox=c,l.CForm=u,l.CInput=_,l.CLabel=B,l.CRadio=C,l.CSelect=V,l.CTextarea=b,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})}));
@@ -0,0 +1,21 @@
1
+ declare function __VLS_template(): {
2
+ attrs: Partial<{}>;
3
+ slots: {
4
+ default?(_: {}): any;
5
+ };
6
+ refs: {};
7
+ rootEl: any;
8
+ };
9
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
10
+ declare const __VLS_component: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
11
+ submit: (event: Event) => any;
12
+ }, string, import('vue').PublicProps, Readonly<{}> & Readonly<{
13
+ onSubmit?: ((event: Event) => any) | undefined;
14
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
15
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
16
+ export default _default;
17
+ type __VLS_WithTemplateSlots<T, S> = T & {
18
+ new (): {
19
+ $slots: S;
20
+ };
21
+ };
@@ -0,0 +1 @@
1
+ export {};
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export { default as CButton } from './components/BaseButton';
2
2
  export { default as CCheckbox } from './components/BaseCheckbox';
3
+ export { default as CForm } from './components/BaseForm';
3
4
  export { default as CInput } from './components/BaseInput';
4
5
  export { default as CLabel } from './components/BaseLabel';
5
6
  export { default as CRadio } from './components/BaseRadio';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@charpente-ui/vue",
3
- "version": "1.0.0",
3
+ "version": "1.1.1",
4
4
  "description": "Charpente UI is a headless CSS Vue component library.",
5
5
  "type": "module",
6
6
  "scripts": {