finso-vue-components 0.1.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.
@@ -0,0 +1,31 @@
1
+ export interface FButtonProps {
2
+ variant?: 'flat' | 'text' | 'elevated' | 'tonal' | 'outlined' | 'plain';
3
+ color?: string;
4
+ size?: 'x-small' | 'small' | 'default' | 'large' | 'x-large';
5
+ rounded?: string | number | boolean;
6
+ loading?: boolean;
7
+ disabled?: boolean;
8
+ }
9
+ declare var __VLS_6: {}, __VLS_8: {}, __VLS_10: {};
10
+ type __VLS_Slots = {} & {
11
+ prepend?: (props: typeof __VLS_6) => any;
12
+ } & {
13
+ default?: (props: typeof __VLS_8) => any;
14
+ } & {
15
+ append?: (props: typeof __VLS_10) => any;
16
+ };
17
+ declare const __VLS_component: import("vue").DefineComponent<FButtonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<FButtonProps> & Readonly<{}>, {
18
+ variant: "flat" | "text" | "elevated" | "tonal" | "outlined" | "plain";
19
+ color: string;
20
+ size: "x-small" | "small" | "default" | "large" | "x-large";
21
+ rounded: string | number | boolean;
22
+ loading: boolean;
23
+ disabled: boolean;
24
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
25
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
26
+ export default _default;
27
+ type __VLS_WithSlots<T, S> = T & {
28
+ new (): {
29
+ $slots: S;
30
+ };
31
+ };
@@ -0,0 +1,2 @@
1
+ export { default as FButton } from './FButton.vue';
2
+ export type { FButtonProps } from './FButton.vue';
@@ -0,0 +1,34 @@
1
+ export interface FDataTableHeader {
2
+ title: string;
3
+ key: string;
4
+ align?: 'start' | 'center' | 'end';
5
+ sortable?: boolean;
6
+ width?: string | number;
7
+ }
8
+ export interface FDataTableProps {
9
+ headers: FDataTableHeader[];
10
+ items: Record<string, unknown>[];
11
+ loading?: boolean;
12
+ search?: string;
13
+ itemsPerPage?: number;
14
+ hover?: boolean;
15
+ density?: 'default' | 'comfortable' | 'compact';
16
+ }
17
+ declare var __VLS_7: string | number, __VLS_8: any;
18
+ type __VLS_Slots = {} & {
19
+ [K in NonNullable<typeof __VLS_7>]?: (props: typeof __VLS_8) => any;
20
+ };
21
+ declare const __VLS_component: import("vue").DefineComponent<FDataTableProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<FDataTableProps> & Readonly<{}>, {
22
+ loading: boolean;
23
+ density: "default" | "comfortable" | "compact";
24
+ search: string;
25
+ itemsPerPage: number;
26
+ hover: boolean;
27
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
28
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
29
+ export default _default;
30
+ type __VLS_WithSlots<T, S> = T & {
31
+ new (): {
32
+ $slots: S;
33
+ };
34
+ };
@@ -0,0 +1,2 @@
1
+ export { default as FDataTable } from './FDataTable.vue';
2
+ export type { FDataTableProps, FDataTableHeader } from './FDataTable.vue';
@@ -0,0 +1,47 @@
1
+ export interface FTextFieldProps {
2
+ modelValue?: string;
3
+ variant?: 'filled' | 'outlined' | 'plain' | 'underlined' | 'solo' | 'solo-inverted' | 'solo-filled';
4
+ density?: 'default' | 'comfortable' | 'compact';
5
+ label?: string;
6
+ placeholder?: string;
7
+ hint?: string;
8
+ persistentHint?: boolean;
9
+ clearable?: boolean;
10
+ disabled?: boolean;
11
+ readonly?: boolean;
12
+ rules?: ((value: string) => boolean | string)[];
13
+ }
14
+ type __VLS_Props = FTextFieldProps;
15
+ type __VLS_PublicProps = __VLS_Props & {
16
+ modelValue?: string;
17
+ };
18
+ declare var __VLS_6: {}, __VLS_8: {}, __VLS_10: {}, __VLS_12: {};
19
+ type __VLS_Slots = {} & {
20
+ prepend?: (props: typeof __VLS_6) => any;
21
+ } & {
22
+ 'prepend-inner'?: (props: typeof __VLS_8) => any;
23
+ } & {
24
+ 'append-inner'?: (props: typeof __VLS_10) => any;
25
+ } & {
26
+ append?: (props: typeof __VLS_12) => any;
27
+ };
28
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
29
+ "update:modelValue": (value: string | undefined) => any;
30
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
31
+ "onUpdate:modelValue"?: ((value: string | undefined) => any) | undefined;
32
+ }>, {
33
+ variant: "filled" | "outlined" | "plain" | "underlined" | "solo" | "solo-inverted" | "solo-filled";
34
+ disabled: boolean;
35
+ density: "default" | "comfortable" | "compact";
36
+ readonly: boolean;
37
+ modelValue: string;
38
+ persistentHint: boolean;
39
+ clearable: boolean;
40
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
41
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
42
+ export default _default;
43
+ type __VLS_WithSlots<T, S> = T & {
44
+ new (): {
45
+ $slots: S;
46
+ };
47
+ };
@@ -0,0 +1,2 @@
1
+ export { default as FTextField } from './FTextField.vue';
2
+ export type { FTextFieldProps } from './FTextField.vue';
@@ -0,0 +1,161 @@
1
+ import { defineComponent as s, resolveComponent as i, openBlock as r, createBlock as u, mergeProps as f, createSlots as m, withCtx as n, renderSlot as l, useModel as y, mergeModels as h, renderList as b, normalizeProps as c, guardReactiveProps as $ } from "vue";
2
+ const g = /* @__PURE__ */ s({
3
+ name: "FButton",
4
+ inheritAttrs: !1,
5
+ __name: "FButton",
6
+ props: {
7
+ variant: { default: "flat" },
8
+ color: { default: "primary" },
9
+ size: { default: "default" },
10
+ rounded: { type: [String, Number, Boolean], default: "lg" },
11
+ loading: { type: Boolean, default: !1 },
12
+ disabled: { type: Boolean, default: !1 }
13
+ },
14
+ setup(e) {
15
+ return (a, t) => {
16
+ const d = i("v-btn");
17
+ return r(), u(d, f(a.$attrs, {
18
+ variant: e.variant,
19
+ color: e.color,
20
+ size: e.size,
21
+ rounded: e.rounded,
22
+ loading: e.loading,
23
+ disabled: e.disabled
24
+ }), m({
25
+ default: n(() => [
26
+ l(a.$slots, "default")
27
+ ]),
28
+ _: 2
29
+ }, [
30
+ a.$slots.prepend ? {
31
+ name: "prepend",
32
+ fn: n(() => [
33
+ l(a.$slots, "prepend")
34
+ ]),
35
+ key: "0"
36
+ } : void 0,
37
+ a.$slots.append ? {
38
+ name: "append",
39
+ fn: n(() => [
40
+ l(a.$slots, "append")
41
+ ]),
42
+ key: "1"
43
+ } : void 0
44
+ ]), 1040, ["variant", "color", "size", "rounded", "loading", "disabled"]);
45
+ };
46
+ }
47
+ }), F = /* @__PURE__ */ s({
48
+ name: "FTextField",
49
+ inheritAttrs: !1,
50
+ __name: "FTextField",
51
+ props: /* @__PURE__ */ h({
52
+ modelValue: { default: "" },
53
+ variant: { default: "outlined" },
54
+ density: { default: "default" },
55
+ label: {},
56
+ placeholder: {},
57
+ hint: {},
58
+ persistentHint: { type: Boolean, default: !1 },
59
+ clearable: { type: Boolean, default: !1 },
60
+ disabled: { type: Boolean, default: !1 },
61
+ readonly: { type: Boolean, default: !1 },
62
+ rules: {}
63
+ }, {
64
+ modelValue: {},
65
+ modelModifiers: {}
66
+ }),
67
+ emits: ["update:modelValue"],
68
+ setup(e) {
69
+ const a = y(e, "modelValue");
70
+ return (t, d) => {
71
+ const p = i("v-text-field");
72
+ return r(), u(p, f(t.$attrs, {
73
+ modelValue: a.value,
74
+ "onUpdate:modelValue": d[0] || (d[0] = (o) => a.value = o),
75
+ variant: e.variant,
76
+ density: e.density,
77
+ label: e.label,
78
+ placeholder: e.placeholder,
79
+ hint: e.hint,
80
+ "persistent-hint": e.persistentHint,
81
+ clearable: e.clearable,
82
+ disabled: e.disabled,
83
+ readonly: e.readonly,
84
+ rules: e.rules
85
+ }), m({ _: 2 }, [
86
+ t.$slots.prepend ? {
87
+ name: "prepend",
88
+ fn: n(() => [
89
+ l(t.$slots, "prepend")
90
+ ]),
91
+ key: "0"
92
+ } : void 0,
93
+ t.$slots["prepend-inner"] ? {
94
+ name: "prepend-inner",
95
+ fn: n(() => [
96
+ l(t.$slots, "prepend-inner")
97
+ ]),
98
+ key: "1"
99
+ } : void 0,
100
+ t.$slots["append-inner"] ? {
101
+ name: "append-inner",
102
+ fn: n(() => [
103
+ l(t.$slots, "append-inner")
104
+ ]),
105
+ key: "2"
106
+ } : void 0,
107
+ t.$slots.append ? {
108
+ name: "append",
109
+ fn: n(() => [
110
+ l(t.$slots, "append")
111
+ ]),
112
+ key: "3"
113
+ } : void 0
114
+ ]), 1040, ["modelValue", "variant", "density", "label", "placeholder", "hint", "persistent-hint", "clearable", "disabled", "readonly", "rules"]);
115
+ };
116
+ }
117
+ }), B = /* @__PURE__ */ s({
118
+ name: "FDataTable",
119
+ inheritAttrs: !1,
120
+ __name: "FDataTable",
121
+ props: {
122
+ headers: {},
123
+ items: {},
124
+ loading: { type: Boolean, default: !1 },
125
+ search: { default: "" },
126
+ itemsPerPage: { default: 10 },
127
+ hover: { type: Boolean, default: !0 },
128
+ density: { default: "default" }
129
+ },
130
+ setup(e) {
131
+ return (a, t) => {
132
+ const d = i("v-data-table");
133
+ return r(), u(d, f(a.$attrs, {
134
+ headers: e.headers,
135
+ items: e.items,
136
+ loading: e.loading,
137
+ search: e.search,
138
+ "items-per-page": e.itemsPerPage,
139
+ hover: e.hover,
140
+ density: e.density
141
+ }), m({ _: 2 }, [
142
+ b(a.$slots, (p, o) => ({
143
+ name: o,
144
+ fn: n((v) => [
145
+ l(a.$slots, o, c($(v ?? {})))
146
+ ])
147
+ }))
148
+ ]), 1040, ["headers", "items", "loading", "search", "items-per-page", "hover", "density"]);
149
+ };
150
+ }
151
+ }), T = {
152
+ install(e) {
153
+ e.component("FButton", g), e.component("FTextField", F), e.component("FDataTable", B);
154
+ }
155
+ };
156
+ export {
157
+ g as FButton,
158
+ B as FDataTable,
159
+ F as FTextField,
160
+ T as default
161
+ };
@@ -0,0 +1 @@
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.FinsoVueComponents={},l.Vue))})(this,(function(l,e){"use strict";const i=e.defineComponent({name:"FButton",inheritAttrs:!1,__name:"FButton",props:{variant:{default:"flat"},color:{default:"primary"},size:{default:"default"},rounded:{type:[String,Number,Boolean],default:"lg"},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},setup(t){return(n,a)=>{const d=e.resolveComponent("v-btn");return e.openBlock(),e.createBlock(d,e.mergeProps(n.$attrs,{variant:t.variant,color:t.color,size:t.size,rounded:t.rounded,loading:t.loading,disabled:t.disabled}),e.createSlots({default:e.withCtx(()=>[e.renderSlot(n.$slots,"default")]),_:2},[n.$slots.prepend?{name:"prepend",fn:e.withCtx(()=>[e.renderSlot(n.$slots,"prepend")]),key:"0"}:void 0,n.$slots.append?{name:"append",fn:e.withCtx(()=>[e.renderSlot(n.$slots,"append")]),key:"1"}:void 0]),1040,["variant","color","size","rounded","loading","disabled"])}}}),r=e.defineComponent({name:"FTextField",inheritAttrs:!1,__name:"FTextField",props:e.mergeModels({modelValue:{default:""},variant:{default:"outlined"},density:{default:"default"},label:{},placeholder:{},hint:{},persistentHint:{type:Boolean,default:!1},clearable:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},rules:{}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(t){const n=e.useModel(t,"modelValue");return(a,d)=>{const f=e.resolveComponent("v-text-field");return e.openBlock(),e.createBlock(f,e.mergeProps(a.$attrs,{modelValue:n.value,"onUpdate:modelValue":d[0]||(d[0]=o=>n.value=o),variant:t.variant,density:t.density,label:t.label,placeholder:t.placeholder,hint:t.hint,"persistent-hint":t.persistentHint,clearable:t.clearable,disabled:t.disabled,readonly:t.readonly,rules:t.rules}),e.createSlots({_:2},[a.$slots.prepend?{name:"prepend",fn:e.withCtx(()=>[e.renderSlot(a.$slots,"prepend")]),key:"0"}:void 0,a.$slots["prepend-inner"]?{name:"prepend-inner",fn:e.withCtx(()=>[e.renderSlot(a.$slots,"prepend-inner")]),key:"1"}:void 0,a.$slots["append-inner"]?{name:"append-inner",fn:e.withCtx(()=>[e.renderSlot(a.$slots,"append-inner")]),key:"2"}:void 0,a.$slots.append?{name:"append",fn:e.withCtx(()=>[e.renderSlot(a.$slots,"append")]),key:"3"}:void 0]),1040,["modelValue","variant","density","label","placeholder","hint","persistent-hint","clearable","disabled","readonly","rules"])}}}),s=e.defineComponent({name:"FDataTable",inheritAttrs:!1,__name:"FDataTable",props:{headers:{},items:{},loading:{type:Boolean,default:!1},search:{default:""},itemsPerPage:{default:10},hover:{type:Boolean,default:!0},density:{default:"default"}},setup(t){return(n,a)=>{const d=e.resolveComponent("v-data-table");return e.openBlock(),e.createBlock(d,e.mergeProps(n.$attrs,{headers:t.headers,items:t.items,loading:t.loading,search:t.search,"items-per-page":t.itemsPerPage,hover:t.hover,density:t.density}),e.createSlots({_:2},[e.renderList(n.$slots,(f,o)=>({name:o,fn:e.withCtx(p=>[e.renderSlot(n.$slots,o,e.normalizeProps(e.guardReactiveProps(p??{})))])}))]),1040,["headers","items","loading","search","items-per-page","hover","density"])}}}),m={install(t){t.component("FButton",i),t.component("FTextField",r),t.component("FDataTable",s)}};l.FButton=i,l.FDataTable=s,l.FTextField=r,l.default=m,Object.defineProperties(l,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
@@ -0,0 +1,9 @@
1
+ import type { Plugin } from 'vue';
2
+ export { FButton } from './components/FButton';
3
+ export { FTextField } from './components/FTextField';
4
+ export { FDataTable } from './components/FDataTable';
5
+ export type { FButtonProps } from './components/FButton';
6
+ export type { FTextFieldProps } from './components/FTextField';
7
+ export type { FDataTableProps, FDataTableHeader } from './components/FDataTable';
8
+ declare const FinsoComponents: Plugin;
9
+ export default FinsoComponents;
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Default Vuetify instance for Storybook & development.
3
+ * Consumers should create their own Vuetify instance.
4
+ */
5
+ export declare function createFinsoVuetify(): {
6
+ install: (app: import("vue").App<any>) => void;
7
+ unmount: () => void;
8
+ defaults: import("vue").Ref<import("vuetify").DefaultsInstance, import("vuetify").DefaultsInstance>;
9
+ display: import("vuetify").DisplayInstance;
10
+ theme: import("vuetify").ThemeInstance & {
11
+ install: (app: import("vue").App<any>) => void;
12
+ };
13
+ icons: {
14
+ defaultSet: string;
15
+ aliases: Partial<import("vuetify").IconAliases>;
16
+ sets: Record<string, import("vuetify").IconSet>;
17
+ };
18
+ locale: {
19
+ name: string;
20
+ decimalSeparator: import("vue").ShallowRef<string>;
21
+ messages: import("vue").Ref<import("vuetify").LocaleMessages, import("vuetify").LocaleMessages>;
22
+ current: import("vue").Ref<string, string>;
23
+ fallback: import("vue").Ref<string, string>;
24
+ t: (key: string, ...params: unknown[]) => string;
25
+ n: (value: number) => string;
26
+ provide: (props: import("vuetify").LocaleOptions) => import("vuetify").LocaleInstance;
27
+ isRtl: import("vue").Ref<boolean, boolean>;
28
+ rtl: import("vue").Ref<Record<string, boolean>, Record<string, boolean>>;
29
+ rtlClasses: import("vue").Ref<string, string>;
30
+ };
31
+ date: {
32
+ options: {
33
+ adapter: (new (options: {
34
+ locale: any;
35
+ formats?: any;
36
+ }) => import("vuetify").DateInstance) | import("vuetify").DateInstance;
37
+ formats?: Record<string, any>;
38
+ locale: Record<string, any>;
39
+ };
40
+ instance: {
41
+ date: (value?: any) => unknown;
42
+ format: (date: unknown, formatString: string) => string;
43
+ toJsDate: (value: unknown) => Date;
44
+ parseISO: (date: string) => unknown;
45
+ toISO: (date: unknown) => string;
46
+ startOfDay: (date: unknown) => unknown;
47
+ endOfDay: (date: unknown) => unknown;
48
+ startOfWeek: (date: unknown, firstDayOfWeek?: string | number | undefined) => unknown;
49
+ endOfWeek: (date: unknown) => unknown;
50
+ startOfMonth: (date: unknown) => unknown;
51
+ endOfMonth: (date: unknown) => unknown;
52
+ startOfYear: (date: unknown) => unknown;
53
+ endOfYear: (date: unknown) => unknown;
54
+ isAfter: (date: unknown, comparing: unknown) => boolean;
55
+ isAfterDay: (date: unknown, comparing: unknown) => boolean;
56
+ isSameDay: (date: unknown, comparing: unknown) => boolean;
57
+ isSameMonth: (date: unknown, comparing: unknown) => boolean;
58
+ isSameYear: (date: unknown, comparing: unknown) => boolean;
59
+ isBefore: (date: unknown, comparing: unknown) => boolean;
60
+ isEqual: (date: unknown, comparing: unknown) => boolean;
61
+ isValid: (date: any) => boolean;
62
+ isWithinRange: (date: unknown, range: [unknown, unknown]) => boolean;
63
+ addMinutes: (date: unknown, amount: number) => unknown;
64
+ addHours: (date: unknown, amount: number) => unknown;
65
+ addDays: (date: unknown, amount: number) => unknown;
66
+ addWeeks: (date: unknown, amount: number) => unknown;
67
+ addMonths: (date: unknown, amount: number) => unknown;
68
+ getYear: (date: unknown) => number;
69
+ setYear: (date: unknown, year: number) => unknown;
70
+ getDiff: (date: unknown, comparing: unknown, unit?: string | undefined) => number;
71
+ getWeekArray: (date: unknown, firstDayOfWeek?: string | number | undefined) => unknown[][];
72
+ getWeekdays: (firstDayOfWeek?: string | number | undefined, weekdayFormat?: "long" | "narrow" | "short" | undefined) => string[];
73
+ getWeek: (date: unknown, firstDayOfWeek?: string | number | undefined, firstDayOfYear?: string | number | undefined) => number;
74
+ getMonth: (date: unknown) => number;
75
+ setMonth: (date: unknown, month: number) => unknown;
76
+ getDate: (date: unknown) => number;
77
+ setDate: (date: unknown, day: number) => unknown;
78
+ getNextMonth: (date: unknown) => unknown;
79
+ getPreviousMonth: (date: unknown) => unknown;
80
+ getHours: (date: unknown) => number;
81
+ setHours: (date: unknown, hours: number) => unknown;
82
+ getMinutes: (date: unknown) => number;
83
+ setMinutes: (date: unknown, minutes: number) => unknown;
84
+ locale?: any;
85
+ };
86
+ };
87
+ goTo: import("vuetify").GoToInstance;
88
+ };
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "finso-vue-components",
3
+ "version": "0.1.0",
4
+ "description": "Finso Vue 3 + Vuetify UI Component Library",
5
+ "type": "module",
6
+ "main": "./dist/finso-vue-components.umd.cjs",
7
+ "module": "./dist/finso-vue-components.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/finso-vue-components.js",
13
+ "require": "./dist/finso-vue-components.umd.cjs"
14
+ },
15
+ "./styles": "./dist/style.css"
16
+ },
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "peerDependencies": {
21
+ "vue": "^3.4.0",
22
+ "vuetify": "^3.7.0"
23
+ },
24
+ "devDependencies": {
25
+ "@mdi/font": "^7.4.47",
26
+ "@storybook/addon-essentials": "^8.4.0",
27
+ "@storybook/blocks": "^8.4.0",
28
+ "@storybook/vue3": "^8.4.0",
29
+ "@storybook/vue3-vite": "^8.4.0",
30
+ "@vitejs/plugin-vue": "^5.2.0",
31
+ "sass": "^1.80.0",
32
+ "storybook": "^8.4.0",
33
+ "typescript": "~5.6.0",
34
+ "vite": "^6.0.0",
35
+ "vue": "^3.5.0",
36
+ "vue-tsc": "^2.1.0",
37
+ "vuetify": "^3.7.0"
38
+ },
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "https://gitlab.com/finso/finso-vue-components.git"
42
+ },
43
+ "keywords": [
44
+ "vue",
45
+ "vue3",
46
+ "vuetify",
47
+ "component-library",
48
+ "finso",
49
+ "ui"
50
+ ],
51
+ "license": "MIT",
52
+ "publishConfig": {
53
+ "access": "public"
54
+ },
55
+ "scripts": {
56
+ "build": "vite build && vue-tsc --emitDeclarationOnly",
57
+ "storybook": "storybook dev -p 6006",
58
+ "build-storybook": "storybook build",
59
+ "lint": "eslint src/"
60
+ }
61
+ }