@charpente-ui/vue 1.1.2 → 1.2.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/README.md CHANGED
@@ -61,7 +61,7 @@ npm install @charpente-ui/vue
61
61
  These components are thin wrappers around native elements. They use `v-model` and automatically link with labels via
62
62
  `useId()`. Full attribute inheritance.
63
63
 
64
- 2. **Selection Logic** _(CCheckbox, CRadio)_
64
+ 2. **Selection Logic** _(CCheckbox, CRadio, CSelect)_
65
65
 
66
66
  Managing checkbox arrays in Vue can be repetitive. **Charpente UI** simplifies this:
67
67
 
@@ -70,6 +70,21 @@ Managing checkbox arrays in Vue can be repetitive. **Charpente UI** simplifies t
70
70
  <CCheckbox v-model="tags" value="bar"/>
71
71
  ```
72
72
 
73
+ `CCheckbox` also supports the `indeterminate` state for partial selections:
74
+
75
+ ```vue
76
+ <CCheckbox v-model="allSelected" :indeterminate="someSelected"/>
77
+ ```
78
+
79
+ `CSelect` supports multiple selection via the native `multiple` attribute:
80
+
81
+ ```vue
82
+ <CSelect v-model="selectedItems" multiple>
83
+ <option value="foo">Foo</option>
84
+ <option value="bar">Bar</option>
85
+ </CSelect>
86
+ ```
87
+
73
88
  3. **Polymorphic Elements** _(CButton)_
74
89
 
75
90
  The button can change its HTML tag while keeping its behavior.
@@ -84,10 +99,11 @@ The button can change its HTML tag while keeping its behavior.
84
99
  | Name | Core Logic | Tag | Status |
85
100
  |----------|----------------------------------------------------------------------------------|-------------|--------|
86
101
  | Button | **Polymorphic:** Switches tags _(a, button, etc...)_ while keeping logic. | `CButton` | Ready |
87
- | Checkbox | **Smart Toggle:** Handles array state and booleans natively. | `CCheckbox` | Ready |
102
+ | Checkbox | **Smart Toggle:** Handles array state, booleans, and indeterminate natively. | `CCheckbox` | Ready |
103
+ | File | **File Input:** Reactive file selection with `v-model` support. | `CFile` | Ready |
88
104
  | Form | **Auto-Submit:** Integrated `preventDefault` and event handling. | `CForm` | Ready |
89
105
  | Input | **Auto-ID:** Auto-links to labels via `useId()` and full attributes inheritance. | `CInput` | Ready |
90
106
  | Label | **Context-Aware:** Simple, accessible binding for any input. | `CLabel` | Ready |
91
107
  | Radio | **Selection:** Minimalist wrapper for native radio input. | `CRadio` | Ready |
92
- | Select | **Native Wrapper:** Easy option management without the boilerplate. | `CSelect` | Ready |
108
+ | Select | **Native Wrapper:** Single and multiple selection support. | `CSelect` | Ready |
93
109
  | Textarea | **Flexible Binding:** Auto-ID and reactive model management. | `CTextarea` | Ready |
package/dist/charpente.js CHANGED
@@ -1,54 +1,82 @@
1
- import { defineComponent as d, openBlock as u, createBlock as V, resolveDynamicComponent as I, normalizeProps as B, guardReactiveProps as C, withCtx as b, renderSlot as $, useModel as f, useAttrs as c, useId as p, computed as _, withDirectives as v, createElementBlock as i, mergeProps as m, vModelCheckbox as M, mergeModels as h, withModifiers as A, vModelDynamic as g, vModelRadio as k, vModelSelect as x, vModelText as y } from "vue";
2
- const z = /* @__PURE__ */ d({
1
+ import { defineComponent as u, openBlock as d, createBlock as I, resolveDynamicComponent as B, normalizeProps as M, guardReactiveProps as g, withCtx as b, renderSlot as h, useModel as _, useAttrs as c, useId as p, useTemplateRef as A, computed as f, watchEffect as k, withDirectives as $, createElementBlock as i, mergeProps as m, vModelCheckbox as y, mergeModels as V, ref as x, watch as R, withModifiers as w, vModelDynamic as S, vModelRadio as U, vModelSelect as F, vModelText as T } from "vue";
2
+ const J = /* @__PURE__ */ u({
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(I(t.as), B(C(e.$attrs)), {
9
+ return (e, s) => (d(), I(B(t.as), M(g(e.$attrs)), {
10
10
  default: b(() => [
11
- $(e.$slots, "default")
11
+ h(e.$slots, "default")
12
12
  ]),
13
13
  _: 3
14
14
  }, 16));
15
15
  }
16
- }), S = ["id", "value"], E = /* @__PURE__ */ d({
16
+ }), D = ["id", "value"], K = /* @__PURE__ */ u({
17
17
  inheritAttrs: !1,
18
18
  __name: "BaseCheckbox",
19
- props: /* @__PURE__ */ h({
20
- value: {}
19
+ props: /* @__PURE__ */ V({
20
+ value: {},
21
+ indeterminate: { type: Boolean }
21
22
  }, {
22
23
  modelValue: { type: [Boolean, Array] },
23
24
  modelModifiers: {}
24
25
  }),
25
26
  emits: ["update:modelValue"],
26
27
  setup(t) {
27
- const e = f(t, "modelValue"), o = c(), r = p(), l = _(() => o.id || r);
28
- return (n, s) => v((u(), i("input", m({ type: "checkbox" }, n.$attrs, {
29
- "onUpdate:modelValue": s[0] || (s[0] = (a) => e.value = a),
30
- id: l.value,
28
+ const e = t, s = _(t, "modelValue"), r = c(), n = p(), l = A("input"), a = f(() => r.id || n);
29
+ return k(() => {
30
+ l.value && (l.value.indeterminate = !!e.indeterminate);
31
+ }), (o, v) => $((d(), i("input", m({
32
+ ref: "input",
33
+ type: "checkbox"
34
+ }, o.$attrs, {
35
+ "onUpdate:modelValue": v[0] || (v[0] = (C) => s.value = C),
36
+ id: a.value,
31
37
  value: t.value
32
- }), null, 16, S)), [
33
- [M, e.value]
38
+ }), null, 16, D)), [
39
+ [y, s.value]
34
40
  ]);
35
41
  }
36
- }), U = ["id"], j = /* @__PURE__ */ d({
42
+ }), P = ["id"], N = /* @__PURE__ */ u({
43
+ inheritAttrs: !1,
44
+ __name: "BaseFile",
45
+ props: {
46
+ modelValue: {},
47
+ modelModifiers: {}
48
+ },
49
+ emits: ["update:modelValue"],
50
+ setup(t) {
51
+ const e = _(t, "modelValue"), s = c(), r = p(), n = x(null), l = f(() => s.id || r);
52
+ function a(o) {
53
+ e.value = o.target.files;
54
+ }
55
+ return R(e, (o) => {
56
+ !o && n.value && (n.value.value = "");
57
+ }), (o, v) => (d(), i("input", m({
58
+ type: "file",
59
+ ref_key: "inputRef",
60
+ ref: n
61
+ }, o.$attrs, {
62
+ id: l.value,
63
+ onChange: a
64
+ }), null, 16, P));
65
+ }
66
+ }), E = ["id"], O = /* @__PURE__ */ u({
37
67
  inheritAttrs: !1,
38
68
  __name: "BaseForm",
39
69
  emits: ["submit"],
40
70
  setup(t, { emit: e }) {
41
- const o = c(), r = p(), l = e, n = (a) => {
42
- l("submit", a);
43
- }, s = _(() => o.id || r);
44
- return (a, F) => (u(), i("form", m(a.$attrs, {
45
- id: s.value,
46
- onSubmit: A(n, ["prevent"])
71
+ const s = c(), r = p(), n = e, l = f(() => s.id || r);
72
+ return (a, o) => (d(), i("form", m(a.$attrs, {
73
+ id: l.value,
74
+ onSubmit: o[0] || (o[0] = w((v) => n("submit", v), ["prevent"]))
47
75
  }), [
48
- $(a.$slots, "default")
49
- ], 16, U));
76
+ h(a.$slots, "default")
77
+ ], 16, E));
50
78
  }
51
- }), R = ["id"], q = /* @__PURE__ */ d({
79
+ }), L = ["id"], Q = /* @__PURE__ */ u({
52
80
  inheritAttrs: !1,
53
81
  __name: "BaseInput",
54
82
  props: {
@@ -57,15 +85,15 @@ const z = /* @__PURE__ */ d({
57
85
  },
58
86
  emits: ["update:modelValue"],
59
87
  setup(t) {
60
- const e = f(t, "modelValue"), o = c(), r = p(), l = _(() => o.id || r);
61
- return (n, s) => v((u(), i("input", m(n.$attrs, {
62
- "onUpdate:modelValue": s[0] || (s[0] = (a) => e.value = a),
63
- id: l.value
64
- }), null, 16, R)), [
65
- [g, e.value]
88
+ const e = _(t, "modelValue"), s = c(), r = p(), n = f(() => s.id || r);
89
+ return (l, a) => $((d(), i("input", m(l.$attrs, {
90
+ "onUpdate:modelValue": a[0] || (a[0] = (o) => e.value = o),
91
+ id: n.value
92
+ }), null, 16, L)), [
93
+ [S, e.value]
66
94
  ]);
67
95
  }
68
- }), w = ["for"], G = /* @__PURE__ */ d({
96
+ }), z = ["for"], W = /* @__PURE__ */ u({
69
97
  inheritAttrs: !1,
70
98
  __name: "BaseLabel",
71
99
  props: {
@@ -73,16 +101,16 @@ const z = /* @__PURE__ */ d({
73
101
  },
74
102
  setup(t) {
75
103
  const e = t;
76
- return (o, r) => (u(), i("label", m(o.$attrs, {
104
+ return (s, r) => (d(), i("label", m(s.$attrs, {
77
105
  for: e.for
78
106
  }), [
79
- $(o.$slots, "default")
80
- ], 16, w));
107
+ h(s.$slots, "default")
108
+ ], 16, z));
81
109
  }
82
- }), D = ["id", "value"], H = /* @__PURE__ */ d({
110
+ }), j = ["id", "value"], X = /* @__PURE__ */ u({
83
111
  inheritAttrs: !1,
84
112
  __name: "BaseRadio",
85
- props: /* @__PURE__ */ h({
113
+ props: /* @__PURE__ */ V({
86
114
  value: {}
87
115
  }, {
88
116
  modelValue: {},
@@ -90,16 +118,16 @@ const z = /* @__PURE__ */ d({
90
118
  }),
91
119
  emits: ["update:modelValue"],
92
120
  setup(t) {
93
- const e = f(t, "modelValue"), o = c(), r = p(), l = _(() => o.id || r);
94
- return (n, s) => v((u(), i("input", m({ type: "radio" }, n.$attrs, {
95
- "onUpdate:modelValue": s[0] || (s[0] = (a) => e.value = a),
96
- id: l.value,
121
+ const e = _(t, "modelValue"), s = c(), r = p(), n = f(() => s.id || r);
122
+ return (l, a) => $((d(), i("input", m({ type: "radio" }, l.$attrs, {
123
+ "onUpdate:modelValue": a[0] || (a[0] = (o) => e.value = o),
124
+ id: n.value,
97
125
  value: t.value
98
- }), null, 16, D)), [
99
- [k, e.value]
126
+ }), null, 16, j)), [
127
+ [U, e.value]
100
128
  ]);
101
129
  }
102
- }), P = ["id"], J = /* @__PURE__ */ d({
130
+ }), q = ["id"], Y = /* @__PURE__ */ u({
103
131
  inheritAttrs: !1,
104
132
  __name: "BaseSelect",
105
133
  props: {
@@ -108,17 +136,17 @@ const z = /* @__PURE__ */ d({
108
136
  },
109
137
  emits: ["update:modelValue"],
110
138
  setup(t) {
111
- const e = f(t, "modelValue"), o = c(), r = p(), l = _(() => o.id || r);
112
- return (n, s) => v((u(), i("select", m(n.$attrs, {
113
- "onUpdate:modelValue": s[0] || (s[0] = (a) => e.value = a),
114
- id: l.value
139
+ const e = _(t, "modelValue"), s = c(), r = p(), n = f(() => s.id || r);
140
+ return (l, a) => $((d(), i("select", m(l.$attrs, {
141
+ "onUpdate:modelValue": a[0] || (a[0] = (o) => e.value = o),
142
+ id: n.value
115
143
  }), [
116
- $(n.$slots, "default")
117
- ], 16, P)), [
118
- [x, e.value]
144
+ h(l.$slots, "default")
145
+ ], 16, q)), [
146
+ [F, e.value]
119
147
  ]);
120
148
  }
121
- }), T = ["id"], K = /* @__PURE__ */ d({
149
+ }), G = ["id"], Z = /* @__PURE__ */ u({
122
150
  inheritAttrs: !1,
123
151
  __name: "BaseTextarea",
124
152
  props: {
@@ -127,22 +155,23 @@ const z = /* @__PURE__ */ d({
127
155
  },
128
156
  emits: ["update:modelValue"],
129
157
  setup(t) {
130
- const e = f(t, "modelValue"), o = c(), r = p(), l = _(() => o.id || r);
131
- return (n, s) => v((u(), i("textarea", m(n.$attrs, {
132
- "onUpdate:modelValue": s[0] || (s[0] = (a) => e.value = a),
133
- id: l.value
134
- }), null, 16, T)), [
135
- [y, e.value]
158
+ const e = _(t, "modelValue"), s = c(), r = p(), n = f(() => s.id || r);
159
+ return (l, a) => $((d(), i("textarea", m(l.$attrs, {
160
+ "onUpdate:modelValue": a[0] || (a[0] = (o) => e.value = o),
161
+ id: n.value
162
+ }), null, 16, G)), [
163
+ [T, e.value]
136
164
  ]);
137
165
  }
138
166
  });
139
167
  export {
140
- z as CButton,
141
- E as CCheckbox,
142
- j as CForm,
143
- q as CInput,
144
- G as CLabel,
145
- H as CRadio,
146
- J as CSelect,
147
- K as CTextarea
168
+ J as CButton,
169
+ K as CCheckbox,
170
+ N as CFile,
171
+ O as CForm,
172
+ Q as CInput,
173
+ W as CLabel,
174
+ X as CRadio,
175
+ Y as CSelect,
176
+ Z as CTextarea
148
177
  };
@@ -1 +1 @@
1
- (function(r,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(r=typeof globalThis<"u"?globalThis:r||self,e(r.Charpente={},r.Vue))})(this,(function(r,e){"use strict";const m=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))}}),c=["id","value"],p=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(),d=e.useId(),i=e.computed(()=>s.id||d);return(a,n)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",e.mergeProps({type:"checkbox"},a.$attrs,{"onUpdate:modelValue":n[0]||(n[0]=l=>t.value=l),id:i.value,value:o.value}),null,16,c)),[[e.vModelCheckbox,t.value]])}}),u=["id"],f=e.defineComponent({inheritAttrs:!1,__name:"BaseForm",emits:["submit"],setup(o,{emit:t}){const s=e.useAttrs(),d=e.useId(),i=t,a=l=>{i("submit",l)},n=e.computed(()=>s.id||d);return(l,b)=>(e.openBlock(),e.createElementBlock("form",e.mergeProps(l.$attrs,{id:n.value,onSubmit:e.withModifiers(a,["prevent"])}),[e.renderSlot(l.$slots,"default")],16,u))}}),_=["id"],h=e.defineComponent({inheritAttrs:!1,__name:"BaseInput",props:{modelValue:{},modelModifiers:{}},emits:["update:modelValue"],setup(o){const t=e.useModel(o,"modelValue"),s=e.useAttrs(),d=e.useId(),i=e.computed(()=>s.id||d);return(a,n)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",e.mergeProps(a.$attrs,{"onUpdate:modelValue":n[0]||(n[0]=l=>t.value=l),id:i.value}),null,16,_)),[[e.vModelDynamic,t.value]])}}),B=["for"],$=e.defineComponent({inheritAttrs:!1,__name:"BaseLabel",props:{for:{}},setup(o){const t=o;return(s,d)=>(e.openBlock(),e.createElementBlock("label",e.mergeProps(s.$attrs,{for:t.for}),[e.renderSlot(s.$slots,"default")],16,B))}}),C=["id","value"],k=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(),d=e.useId(),i=e.computed(()=>s.id||d);return(a,n)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",e.mergeProps({type:"radio"},a.$attrs,{"onUpdate:modelValue":n[0]||(n[0]=l=>t.value=l),id:i.value,value:o.value}),null,16,C)),[[e.vModelRadio,t.value]])}}),V=["id"],I=e.defineComponent({inheritAttrs:!1,__name:"BaseSelect",props:{modelValue:{},modelModifiers:{}},emits:["update:modelValue"],setup(o){const t=e.useModel(o,"modelValue"),s=e.useAttrs(),d=e.useId(),i=e.computed(()=>s.id||d);return(a,n)=>e.withDirectives((e.openBlock(),e.createElementBlock("select",e.mergeProps(a.$attrs,{"onUpdate:modelValue":n[0]||(n[0]=l=>t.value=l),id:i.value}),[e.renderSlot(a.$slots,"default")],16,V)),[[e.vModelSelect,t.value]])}}),M=["id"],g=e.defineComponent({inheritAttrs:!1,__name:"BaseTextarea",props:{modelValue:{},modelModifiers:{}},emits:["update:modelValue"],setup(o){const t=e.useModel(o,"modelValue"),s=e.useAttrs(),d=e.useId(),i=e.computed(()=>s.id||d);return(a,n)=>e.withDirectives((e.openBlock(),e.createElementBlock("textarea",e.mergeProps(a.$attrs,{"onUpdate:modelValue":n[0]||(n[0]=l=>t.value=l),id:i.value}),null,16,M)),[[e.vModelText,t.value]])}});r.CButton=m,r.CCheckbox=p,r.CForm=f,r.CInput=h,r.CLabel=$,r.CRadio=k,r.CSelect=I,r.CTextarea=g,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})}));
1
+ (function(r,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(r=typeof globalThis<"u"?globalThis:r||self,e(r.Charpente={},r.Vue))})(this,(function(r,e){"use strict";const c=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))}}),p=["id","value"],u=e.defineComponent({inheritAttrs:!1,__name:"BaseCheckbox",props:e.mergeModels({value:{},indeterminate:{type:Boolean}},{modelValue:{type:[Boolean,Array]},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const t=o,n=e.useModel(o,"modelValue"),i=e.useAttrs(),a=e.useId(),d=e.useTemplateRef("input"),s=e.computed(()=>i.id||a);return e.watchEffect(()=>{d.value&&(d.value.indeterminate=!!t.indeterminate)}),(l,m)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",e.mergeProps({ref:"input",type:"checkbox"},l.$attrs,{"onUpdate:modelValue":m[0]||(m[0]=P=>n.value=P),id:s.value,value:o.value}),null,16,p)),[[e.vModelCheckbox,n.value]])}}),f=["id"],_=e.defineComponent({inheritAttrs:!1,__name:"BaseFile",props:{modelValue:{},modelModifiers:{}},emits:["update:modelValue"],setup(o){const t=e.useModel(o,"modelValue"),n=e.useAttrs(),i=e.useId(),a=e.ref(null),d=e.computed(()=>n.id||i);function s(l){t.value=l.target.files}return e.watch(t,l=>{!l&&a.value&&(a.value.value="")}),(l,m)=>(e.openBlock(),e.createElementBlock("input",e.mergeProps({type:"file",ref_key:"inputRef",ref:a},l.$attrs,{id:d.value,onChange:s}),null,16,f))}}),h=["id"],B=e.defineComponent({inheritAttrs:!1,__name:"BaseForm",emits:["submit"],setup(o,{emit:t}){const n=e.useAttrs(),i=e.useId(),a=t,d=e.computed(()=>n.id||i);return(s,l)=>(e.openBlock(),e.createElementBlock("form",e.mergeProps(s.$attrs,{id:d.value,onSubmit:l[0]||(l[0]=e.withModifiers(m=>a("submit",m),["prevent"]))}),[e.renderSlot(s.$slots,"default")],16,h))}}),$=["id"],C=e.defineComponent({inheritAttrs:!1,__name:"BaseInput",props:{modelValue:{},modelModifiers:{}},emits:["update:modelValue"],setup(o){const t=e.useModel(o,"modelValue"),n=e.useAttrs(),i=e.useId(),a=e.computed(()=>n.id||i);return(d,s)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",e.mergeProps(d.$attrs,{"onUpdate:modelValue":s[0]||(s[0]=l=>t.value=l),id:a.value}),null,16,$)),[[e.vModelDynamic,t.value]])}}),k=["for"],V=e.defineComponent({inheritAttrs:!1,__name:"BaseLabel",props:{for:{}},setup(o){const t=o;return(n,i)=>(e.openBlock(),e.createElementBlock("label",e.mergeProps(n.$attrs,{for:t.for}),[e.renderSlot(n.$slots,"default")],16,k))}}),I=["id","value"],g=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(),i=e.useId(),a=e.computed(()=>n.id||i);return(d,s)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",e.mergeProps({type:"radio"},d.$attrs,{"onUpdate:modelValue":s[0]||(s[0]=l=>t.value=l),id:a.value,value:o.value}),null,16,I)),[[e.vModelRadio,t.value]])}}),M=["id"],A=e.defineComponent({inheritAttrs:!1,__name:"BaseSelect",props:{modelValue:{},modelModifiers:{}},emits:["update:modelValue"],setup(o){const t=e.useModel(o,"modelValue"),n=e.useAttrs(),i=e.useId(),a=e.computed(()=>n.id||i);return(d,s)=>e.withDirectives((e.openBlock(),e.createElementBlock("select",e.mergeProps(d.$attrs,{"onUpdate:modelValue":s[0]||(s[0]=l=>t.value=l),id:a.value}),[e.renderSlot(d.$slots,"default")],16,M)),[[e.vModelSelect,t.value]])}}),b=["id"],y=e.defineComponent({inheritAttrs:!1,__name:"BaseTextarea",props:{modelValue:{},modelModifiers:{}},emits:["update:modelValue"],setup(o){const t=e.useModel(o,"modelValue"),n=e.useAttrs(),i=e.useId(),a=e.computed(()=>n.id||i);return(d,s)=>e.withDirectives((e.openBlock(),e.createElementBlock("textarea",e.mergeProps(d.$attrs,{"onUpdate:modelValue":s[0]||(s[0]=l=>t.value=l),id:a.value}),null,16,b)),[[e.vModelText,t.value]])}});r.CButton=c,r.CCheckbox=u,r.CFile=_,r.CForm=B,r.CInput=C,r.CLabel=V,r.CRadio=g,r.CSelect=A,r.CTextarea=y,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})}));
@@ -1,5 +1,6 @@
1
1
  type __VLS_Props = {
2
2
  value?: string | number;
3
+ indeterminate?: boolean;
3
4
  };
4
5
  type __VLS_PublicProps = {
5
6
  modelValue?: boolean | (string | number)[];
@@ -8,5 +9,7 @@ declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {}, {},
8
9
  "update:modelValue": (value: boolean | (string | number)[]) => any;
9
10
  }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
10
11
  "onUpdate:modelValue"?: ((value: boolean | (string | number)[]) => any) | undefined;
11
- }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
12
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
13
+ input: HTMLInputElement;
14
+ }, any>;
12
15
  export default _default;
@@ -0,0 +1,11 @@
1
+ type __VLS_PublicProps = {
2
+ modelValue?: FileList | null;
3
+ };
4
+ declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
5
+ "update:modelValue": (value: FileList | null) => any;
6
+ }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
7
+ "onUpdate:modelValue"?: ((value: FileList | null) => any) | undefined;
8
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
9
+ inputRef: HTMLInputElement;
10
+ }, any>;
11
+ export default _default;
@@ -7,7 +7,7 @@ declare function __VLS_template(): {
7
7
  rootEl: any;
8
8
  };
9
9
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
10
- declare const __VLS_component: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
10
+ declare const __VLS_component: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
11
11
  submit: (event: Event) => any;
12
12
  }, string, import('vue').PublicProps, Readonly<{}> & Readonly<{
13
13
  onSubmit?: ((event: Event) => any) | undefined;
@@ -1,5 +1,5 @@
1
1
  type __VLS_PublicProps = {
2
- modelValue?: string | number;
2
+ modelValue?: string | number | (string | number)[];
3
3
  };
4
4
  declare function __VLS_template(): {
5
5
  attrs: Partial<{}>;
@@ -11,9 +11,9 @@ declare function __VLS_template(): {
11
11
  };
12
12
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
13
13
  declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
14
- "update:modelValue": (value: string | number) => any;
14
+ "update:modelValue": (value: string | number | (string | number)[]) => any;
15
15
  }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
16
- "onUpdate:modelValue"?: ((value: string | number) => any) | undefined;
16
+ "onUpdate:modelValue"?: ((value: string | number | (string | number)[]) => any) | undefined;
17
17
  }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
18
18
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
19
19
  export default _default;
@@ -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 CFile } from './components/BaseFile';
3
4
  export { default as CForm } from './components/BaseForm';
4
5
  export { default as CInput } from './components/BaseInput';
5
6
  export { default as CLabel } from './components/BaseLabel';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@charpente-ui/vue",
3
- "version": "1.1.2",
3
+ "version": "1.2.0",
4
4
  "description": "Charpente UI is a headless CSS Vue component library.",
5
5
  "type": "module",
6
6
  "scripts": {