veloce-vue 0.9.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 +114 -0
- package/components/Accordion/Index.vue.d.ts +31 -0
- package/components/Accordion/stories.d.ts +10 -0
- package/components/Button/Index.vue.d.ts +82 -0
- package/components/Button/props.d.ts +37 -0
- package/components/Button/stories.d.ts +23 -0
- package/components/icon/index.d.ts +9 -0
- package/components/icon/index.vue.d.ts +10 -0
- package/composables/useRandomId.d.ts +1 -0
- package/exports.d.ts +3 -0
- package/icons/alert.vue.d.ts +3 -0
- package/icons/check.vue.d.ts +3 -0
- package/icons/chevron-down.vue.d.ts +3 -0
- package/icons/close.vue.d.ts +3 -0
- package/icons/loading.vue.d.ts +3 -0
- package/index.cjs +2 -0
- package/index.cjs.map +1 -0
- package/index.js +120 -0
- package/index.js.map +1 -0
- package/package.json +53 -0
- package/pages/Home/Index.vue.d.ts +3 -0
- package/pages/Home/stories.d.ts +6 -0
- package/types/config.d.ts +9 -0
- package/utils/config.d.ts +4 -0
- package/utils/storyControls.d.ts +4 -0
- package/veloce-vue.css +1 -0
package/README.md
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Vue-Components
|
|
2
|
+
|
|
3
|
+
A modern Vue.js UI component library built with Vue, Typescript, Storybook and Tailwind CSS.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Install the library from NPM:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pnpm add @sherazjutt/vue-components
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Setup
|
|
14
|
+
|
|
15
|
+
### 1. Import the CSS
|
|
16
|
+
|
|
17
|
+
Import the library's styles in your main application file:
|
|
18
|
+
|
|
19
|
+
```javascript
|
|
20
|
+
import "@sherazjutt/vue-components/style.css";
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### 2. Import Components
|
|
24
|
+
|
|
25
|
+
Import the components you need in your Vue components:
|
|
26
|
+
|
|
27
|
+
```javascript
|
|
28
|
+
import { Button } from "@sherazjutt/vue-components";
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Usage Example
|
|
32
|
+
|
|
33
|
+
```vue
|
|
34
|
+
<template>
|
|
35
|
+
<div>
|
|
36
|
+
<!-- Primary Button -->
|
|
37
|
+
<Button label="Primary Button" />
|
|
38
|
+
</div>
|
|
39
|
+
</template>
|
|
40
|
+
|
|
41
|
+
<script setup>
|
|
42
|
+
import { Button } from "@sherazjutt/vue-components";
|
|
43
|
+
</script>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Main Application Setup
|
|
47
|
+
|
|
48
|
+
In your main application file (e.g., `main.ts`):
|
|
49
|
+
|
|
50
|
+
```javascript
|
|
51
|
+
import "@sherazjutt/vue-components/styles.css";
|
|
52
|
+
import "./style.css";
|
|
53
|
+
|
|
54
|
+
import { createApp } from "vue";
|
|
55
|
+
import App from "./App.vue";
|
|
56
|
+
|
|
57
|
+
const app = createApp(App);
|
|
58
|
+
app.mount("#app");
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Requirements
|
|
62
|
+
|
|
63
|
+
- Vue 3.5 or higher
|
|
64
|
+
- Tailwind CSS v4 (for styling)
|
|
65
|
+
|
|
66
|
+
## Development
|
|
67
|
+
|
|
68
|
+
This library is built using:
|
|
69
|
+
|
|
70
|
+
- Vue 3
|
|
71
|
+
- Tailwind CSS v4
|
|
72
|
+
- Vite
|
|
73
|
+
- Storybook for component documentation
|
|
74
|
+
- TypeScript
|
|
75
|
+
|
|
76
|
+
## Production
|
|
77
|
+
|
|
78
|
+
Run `pnpm build` to build the package.
|
|
79
|
+
Run `pnpm run build-storybook` to build storybook only.
|
|
80
|
+
|
|
81
|
+
To test the storybook locally, you can run `pnpm run preview-storybook`. This will start the storybook production build.
|
|
82
|
+
|
|
83
|
+
### Consuming application UI configuration
|
|
84
|
+
|
|
85
|
+
Create `ui.config.ts` and add the following code:
|
|
86
|
+
|
|
87
|
+
```javascript
|
|
88
|
+
import { config } from "@sherazjutt/vue-components";
|
|
89
|
+
|
|
90
|
+
const themeConfig = {
|
|
91
|
+
colors: {
|
|
92
|
+
primary: "#F5276C",
|
|
93
|
+
secondary: "#F54927",
|
|
94
|
+
accent: "#F5B027",
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
export default config(themeConfig);
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Import and use it in `main.ts`:
|
|
102
|
+
|
|
103
|
+
```javascript
|
|
104
|
+
import UIConfig from "./ui.config";
|
|
105
|
+
|
|
106
|
+
// after creating your Vue app instance:
|
|
107
|
+
app.use(UIConfig);
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Use the UI colors in your components/styles:
|
|
111
|
+
|
|
112
|
+
```html
|
|
113
|
+
<div :style="{ backgroundColor: 'var(--ui-color-primary)' }">...</div>
|
|
114
|
+
```
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
declare var __VLS_7: string, __VLS_8: {};
|
|
2
|
+
type __VLS_Slots = {} & {
|
|
3
|
+
[K in NonNullable<typeof __VLS_7>]?: (props: typeof __VLS_8) => any;
|
|
4
|
+
};
|
|
5
|
+
declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
6
|
+
items: {
|
|
7
|
+
type: () => {
|
|
8
|
+
title: string;
|
|
9
|
+
content: string;
|
|
10
|
+
slot?: string;
|
|
11
|
+
}[];
|
|
12
|
+
required: true;
|
|
13
|
+
};
|
|
14
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
15
|
+
items: {
|
|
16
|
+
type: () => {
|
|
17
|
+
title: string;
|
|
18
|
+
content: string;
|
|
19
|
+
slot?: string;
|
|
20
|
+
}[];
|
|
21
|
+
required: true;
|
|
22
|
+
};
|
|
23
|
+
}>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
24
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
25
|
+
declare const _default: typeof __VLS_export;
|
|
26
|
+
export default _default;
|
|
27
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
28
|
+
new (): {
|
|
29
|
+
$slots: S;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/vue3-vite";
|
|
2
|
+
import Accordion from "./Index.vue";
|
|
3
|
+
declare const meta: Meta<typeof Accordion>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof meta>;
|
|
6
|
+
export declare const Default: Story;
|
|
7
|
+
export declare const SingleItem: Story;
|
|
8
|
+
export declare const ManyItems: Story;
|
|
9
|
+
export declare const WithSlots: Story;
|
|
10
|
+
export declare const Empty: Story;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
2
|
+
readonly label: {
|
|
3
|
+
readonly type: StringConstructor;
|
|
4
|
+
readonly default: "";
|
|
5
|
+
};
|
|
6
|
+
readonly loading: {
|
|
7
|
+
readonly type: BooleanConstructor;
|
|
8
|
+
readonly default: false;
|
|
9
|
+
};
|
|
10
|
+
readonly disabled: {
|
|
11
|
+
readonly type: BooleanConstructor;
|
|
12
|
+
readonly default: false;
|
|
13
|
+
};
|
|
14
|
+
readonly variant: {
|
|
15
|
+
readonly type: import("vue").PropType<"outlined" | "text" | "ghost" | "solid">;
|
|
16
|
+
readonly default: "solid";
|
|
17
|
+
readonly options: readonly ["outlined", "text", "ghost", "solid"];
|
|
18
|
+
};
|
|
19
|
+
readonly icon: {
|
|
20
|
+
readonly type: StringConstructor;
|
|
21
|
+
readonly default: "";
|
|
22
|
+
};
|
|
23
|
+
readonly iconClass: {
|
|
24
|
+
readonly type: StringConstructor;
|
|
25
|
+
readonly default: "";
|
|
26
|
+
};
|
|
27
|
+
readonly iconPosition: {
|
|
28
|
+
readonly type: import("vue").PropType<"left" | "right">;
|
|
29
|
+
readonly default: "right";
|
|
30
|
+
readonly options: readonly ["left", "right"];
|
|
31
|
+
};
|
|
32
|
+
readonly rounded: {
|
|
33
|
+
readonly type: BooleanConstructor;
|
|
34
|
+
readonly default: false;
|
|
35
|
+
};
|
|
36
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
37
|
+
readonly label: {
|
|
38
|
+
readonly type: StringConstructor;
|
|
39
|
+
readonly default: "";
|
|
40
|
+
};
|
|
41
|
+
readonly loading: {
|
|
42
|
+
readonly type: BooleanConstructor;
|
|
43
|
+
readonly default: false;
|
|
44
|
+
};
|
|
45
|
+
readonly disabled: {
|
|
46
|
+
readonly type: BooleanConstructor;
|
|
47
|
+
readonly default: false;
|
|
48
|
+
};
|
|
49
|
+
readonly variant: {
|
|
50
|
+
readonly type: import("vue").PropType<"outlined" | "text" | "ghost" | "solid">;
|
|
51
|
+
readonly default: "solid";
|
|
52
|
+
readonly options: readonly ["outlined", "text", "ghost", "solid"];
|
|
53
|
+
};
|
|
54
|
+
readonly icon: {
|
|
55
|
+
readonly type: StringConstructor;
|
|
56
|
+
readonly default: "";
|
|
57
|
+
};
|
|
58
|
+
readonly iconClass: {
|
|
59
|
+
readonly type: StringConstructor;
|
|
60
|
+
readonly default: "";
|
|
61
|
+
};
|
|
62
|
+
readonly iconPosition: {
|
|
63
|
+
readonly type: import("vue").PropType<"left" | "right">;
|
|
64
|
+
readonly default: "right";
|
|
65
|
+
readonly options: readonly ["left", "right"];
|
|
66
|
+
};
|
|
67
|
+
readonly rounded: {
|
|
68
|
+
readonly type: BooleanConstructor;
|
|
69
|
+
readonly default: false;
|
|
70
|
+
};
|
|
71
|
+
}>> & Readonly<{}>, {
|
|
72
|
+
readonly label: string;
|
|
73
|
+
readonly loading: boolean;
|
|
74
|
+
readonly disabled: boolean;
|
|
75
|
+
readonly variant: "outlined" | "text" | "ghost" | "solid";
|
|
76
|
+
readonly icon: string;
|
|
77
|
+
readonly iconClass: string;
|
|
78
|
+
readonly iconPosition: "left" | "right";
|
|
79
|
+
readonly rounded: boolean;
|
|
80
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
81
|
+
declare const _default: typeof __VLS_export;
|
|
82
|
+
export default _default;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { PropType } from "vue";
|
|
2
|
+
export declare const props: {
|
|
3
|
+
readonly label: {
|
|
4
|
+
readonly type: StringConstructor;
|
|
5
|
+
readonly default: "";
|
|
6
|
+
};
|
|
7
|
+
readonly loading: {
|
|
8
|
+
readonly type: BooleanConstructor;
|
|
9
|
+
readonly default: false;
|
|
10
|
+
};
|
|
11
|
+
readonly disabled: {
|
|
12
|
+
readonly type: BooleanConstructor;
|
|
13
|
+
readonly default: false;
|
|
14
|
+
};
|
|
15
|
+
readonly variant: {
|
|
16
|
+
readonly type: PropType<"outlined" | "text" | "ghost" | "solid">;
|
|
17
|
+
readonly default: "solid";
|
|
18
|
+
readonly options: readonly ["outlined", "text", "ghost", "solid"];
|
|
19
|
+
};
|
|
20
|
+
readonly icon: {
|
|
21
|
+
readonly type: StringConstructor;
|
|
22
|
+
readonly default: "";
|
|
23
|
+
};
|
|
24
|
+
readonly iconClass: {
|
|
25
|
+
readonly type: StringConstructor;
|
|
26
|
+
readonly default: "";
|
|
27
|
+
};
|
|
28
|
+
readonly iconPosition: {
|
|
29
|
+
readonly type: PropType<"left" | "right">;
|
|
30
|
+
readonly default: "right";
|
|
31
|
+
readonly options: readonly ["left", "right"];
|
|
32
|
+
};
|
|
33
|
+
readonly rounded: {
|
|
34
|
+
readonly type: BooleanConstructor;
|
|
35
|
+
readonly default: false;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/vue3-vite";
|
|
2
|
+
import Button from "./Index.vue";
|
|
3
|
+
declare const meta: Meta<typeof Button>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof meta>;
|
|
6
|
+
export declare const Default: Story;
|
|
7
|
+
export declare const WithIconLeft: Story;
|
|
8
|
+
export declare const WithIconRight: Story;
|
|
9
|
+
export declare const Loading: Story;
|
|
10
|
+
export declare const Disabled: Story;
|
|
11
|
+
export declare const Solid: Story;
|
|
12
|
+
export declare const Outlined: Story;
|
|
13
|
+
export declare const Text: Story;
|
|
14
|
+
export declare const Ghost: Story;
|
|
15
|
+
export declare const Rounded: Story;
|
|
16
|
+
export declare const OnlyIcon: Story;
|
|
17
|
+
export declare const CustomIconClass: {
|
|
18
|
+
args: {
|
|
19
|
+
label: string;
|
|
20
|
+
icon: string;
|
|
21
|
+
iconClass: string;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const icons: {
|
|
2
|
+
readonly check: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
3
|
+
readonly close: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
4
|
+
readonly loading: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
5
|
+
readonly "chevron-down": import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
6
|
+
readonly alert: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
7
|
+
};
|
|
8
|
+
export type IconNames = keyof typeof icons;
|
|
9
|
+
export declare const IconsList: IconNames[];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type IconNames } from "./index.ts";
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
icon: IconNames | (string & {});
|
|
4
|
+
fallbackIcon?: IconNames | (string & {});
|
|
5
|
+
class?: string;
|
|
6
|
+
size?: number | string;
|
|
7
|
+
};
|
|
8
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
9
|
+
declare const _default: typeof __VLS_export;
|
|
10
|
+
export default _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function useRandomId(length: number): string;
|
package/exports.d.ts
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
declare const _default: typeof __VLS_export;
|
|
3
|
+
export default _default;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
declare const _default: typeof __VLS_export;
|
|
3
|
+
export default _default;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
declare const _default: typeof __VLS_export;
|
|
3
|
+
export default _default;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
declare const _default: typeof __VLS_export;
|
|
3
|
+
export default _default;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
declare const _default: typeof __VLS_export;
|
|
3
|
+
export default _default;
|
package/index.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),i={label:{type:String,default:""},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},variant:{type:String,default:"solid",options:["outlined","text","ghost","solid"]},icon:{type:String,default:""},iconClass:{type:String,default:""},iconPosition:{type:String,default:"right",options:["left","right"]},rounded:{type:Boolean,default:!1}},c=["disabled"],d=e.defineComponent({__name:"Index",props:i,setup(o){const t=o,r=e.computed(()=>{switch(t.variant){case"outlined":return"!border-primary text-primary bg-transparent hover:bg-primary disabled:hover:bg-transparent disabled:hover:text-primary hover:text-white";case"text":return"bg-transparent text-primary hover:bg-gray-200 disabled:hover:bg-transparent disabled:hover:text-primary";case"ghost":return"text-primary bg-gray-100 hover:bg-gray-200 disabled:hover:bg-transparent disabled:hover:text-primary";default:return"bg-primary text-white hover:bg-primary/75 disabled:hover:bg-primary disabled:hover:text-white"}});return(s,l)=>{const n=e.resolveComponent("Icon");return e.openBlock(),e.createElementBlock("button",{type:"button",disabled:t.disabled||t.loading,class:e.normalizeClass([r.value,{"rounded-full":t.rounded},"flex cursor-pointer items-center justify-center gap-2 rounded border border-transparent px-3 py-2 transition duration-200 disabled:cursor-not-allowed disabled:opacity-75 "])},[e.createElementVNode("div",{class:e.normalizeClass([{"justify-center":!t.icon},"flex w-full items-center justify-between gap-2"])},[t.label?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass({"order-2":t.iconPosition==="left"})},e.toDisplayString(t.label),3)):e.createCommentVNode("",!0),t.icon&&!t.loading?(e.openBlock(),e.createBlock(n,{key:1,icon:t.icon,class:e.normalizeClass(t.iconClass)},null,8,["icon","class"])):e.createCommentVNode("",!0)],2),t.loading?(e.openBlock(),e.createBlock(n,{key:0,icon:"loading"})):e.createCommentVNode("",!0)],10,c)}}}),p={class:"w-full divide-y divide-gray-200 rounded border border-slate-200 bg-white"},u=["onClick"],m={class:"title text-gray-600"},y={key:0,class:"p-3 text-gray-500"},g={key:1,class:"px-3 py-6 text-center text-gray-500"},b=e.defineComponent({__name:"Index",props:{items:{type:Array,required:!0}},setup(o){const t=e.ref(null);return(r,s)=>{const l=e.resolveComponent("Icon");return e.openBlock(),e.createElementBlock("div",p,[o.items.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(o.items,(n,a)=>(e.openBlock(),e.createElementBlock("div",{key:a},[e.createElementVNode("div",{class:e.normalizeClass([{"bg-primary/5":t.value===a},"hover:bg-primary/5 relative flex cursor-pointer justify-between gap-4 p-3 font-medium duration-100"]),onClick:h=>t.value=t.value===a?null:a},[e.createElementVNode("span",m,e.toDisplayString(n.title),1),e.createVNode(l,{icon:"chevron-down",class:e.normalizeClass([{"rotate-180":t.value===a},"icon text-[1.4rem] text-gray-400 duration-200"])},null,8,["class"])],10,u),t.value===a?(e.openBlock(),e.createElementBlock("div",y,[n.slot?e.renderSlot(r.$slots,n.slot,{key:0}):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(n.content),1)],64))])):e.createCommentVNode("",!0)]))),128)):(e.openBlock(),e.createElementBlock("div",g,"No items to show"))])}}}),v=o=>({install(){if(!o||!o.colors){console.warn("No config provided for the theme settings");return}f(o.colors)}}),f=o=>{const t=document.documentElement;for(const r in o)o[r]&&t.style.setProperty(`--ui-color-${r}`,o[r])};exports.Accordion=b;exports.Button=d;exports.config=v;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
package/index.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/components/Button/props.ts","../../src/components/Button/Index.vue","../../src/components/Accordion/Index.vue","../../src/utils/config.ts"],"sourcesContent":["import type { PropType } from \"vue\";\n\nexport const props = {\n label: { type: String, default: \"\" },\n loading: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n variant: {\n type: String as PropType<\"outlined\" | \"text\" | \"ghost\" | \"solid\">,\n default: \"solid\",\n options: [\"outlined\", \"text\", \"ghost\", \"solid\"],\n },\n icon: { type: String, default: \"\" },\n iconClass: { type: String, default: \"\" },\n iconPosition: {\n type: String as PropType<\"left\" | \"right\">,\n default: \"right\",\n options: [\"left\", \"right\"],\n },\n rounded: { type: Boolean, default: false },\n} as const;\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { props as buttonProps } from \"./props\";\n\nconst props = defineProps(buttonProps);\n\nconst classes = computed(() => {\n switch (props.variant) {\n case \"outlined\":\n return \"!border-primary text-primary bg-transparent hover:bg-primary disabled:hover:bg-transparent disabled:hover:text-primary hover:text-white\";\n case \"text\":\n return \"bg-transparent text-primary hover:bg-gray-200 disabled:hover:bg-transparent disabled:hover:text-primary\";\n case \"ghost\":\n return \"text-primary bg-gray-100 hover:bg-gray-200 disabled:hover:bg-transparent disabled:hover:text-primary\";\n default:\n return \"bg-primary text-white hover:bg-primary/75 disabled:hover:bg-primary disabled:hover:text-white\"; // solid\n }\n});\n</script>\n\n<template>\n <!-- prettier-ignore -->\n <button \n type=\"button\" \n :disabled=\"props.disabled || props.loading\" \n :class=\"[\n classes, { 'rounded-full': props.rounded }, \n 'flex cursor-pointer items-center justify-center gap-2 rounded border border-transparent px-3 py-2 transition duration-200 disabled:cursor-not-allowed disabled:opacity-75 '\n ]\"\n >\n <div :class=\"{ 'justify-center': !props.icon }\" class=\"flex w-full items-center justify-between gap-2\">\n <span v-if=\"props.label\" :class=\"{ 'order-2': props.iconPosition === 'left' }\"> {{ props.label }} </span>\n <Icon v-if=\"props.icon && !props.loading\" :icon=\"props.icon\" :class=\"props.iconClass\" />\n </div>\n\n <Icon v-if=\"props.loading\" icon=\"loading\" />\n </button>\n</template>\n","<script setup lang=\"ts\">\nimport { ref } from \"vue\";\n\n// Props definition\n// `items` is an array of objects where each object represents an accordion item.\n// Each item has a `title` (string), `content` (string), and an optional `slot` (string) for custom slot rendering.\ndefineProps({\n items: { type: Array as () => { title: string; content: string; slot?: string }[], required: true },\n});\n\n// This ref holds the index of the currently active (opened) accordion item.\n// If `null`, no accordion item is open.\nconst activeIndex = ref<Number | null>(null);\n</script>\n\n<template>\n <!-- Accordion Container -->\n <div class=\"w-full divide-y divide-gray-200 rounded border border-slate-200 bg-white\">\n <!-- Iterate through items array -->\n <div v-for=\"(item, index) in items\" :key=\"index\" v-if=\"items.length\">\n <!-- Accordion Header -->\n <!-- Clicking toggles activeIndex between `index` and `null` (for collapse) -->\n <div :class=\"{ 'bg-primary/5': activeIndex === index }\" class=\"hover:bg-primary/5 relative flex cursor-pointer justify-between gap-4 p-3 font-medium duration-100\" @click=\"activeIndex = activeIndex === index ? null : index\">\n <!-- Accordion Title -->\n <span class=\"title text-gray-600\">{{ item.title }}</span>\n <!-- Chevron Icon -->\n <Icon icon=\"chevron-down\" :class=\"{ 'rotate-180': activeIndex === index }\" class=\"icon text-[1.4rem] text-gray-400 duration-200\" />\n </div>\n\n <!-- Accordion Body -->\n <div v-if=\"activeIndex === index\" class=\"p-3 text-gray-500\">\n <!-- If slot name is provided, render slot content -->\n <template v-if=\"item.slot\">\n <slot :name=\"item.slot\" />\n </template>\n <!-- Otherwise, render static content -->\n <template v-else>\n {{ item.content }}\n </template>\n </div>\n </div>\n\n <!-- Fallback message if no items provided -->\n <div class=\"px-3 py-6 text-center text-gray-500\" v-else>No items to show</div>\n </div>\n</template>\n","import type { Colors, config as Config } from \"@/types/config\";\n\n// create theme settings\nexport const config = (config: Config) => {\n return {\n install() {\n if (!config || !config.colors) {\n console.warn(\"No config provided for the theme settings\");\n return;\n }\n\n // apply colors\n applyCSSVars(config.colors);\n },\n };\n};\n\n// apply the colors to the root element\nconst applyCSSVars = (colors: Colors) => {\n const root = document.documentElement;\n\n // apply the colors to the root element\n for (const color in colors) {\n if (colors[color as keyof Colors]) {\n root.style.setProperty(`--ui-color-${color}`, colors[color as keyof Colors]);\n }\n }\n};\n"],"names":["props","__props","classes","computed","_createElementBlock","_normalizeClass","_createElementVNode","_toDisplayString","_createBlock","_component_Icon","activeIndex","ref","_openBlock","_hoisted_1","_Fragment","_renderList","item","index","_hoisted_3","_createVNode","_hoisted_4","_renderSlot","_ctx","_createTextVNode","_hoisted_5","config","applyCSSVars","colors","root","color"],"mappings":"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"}
|
package/index.js
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { defineComponent as g, computed as h, resolveComponent as b, createElementBlock as o, openBlock as r, normalizeClass as i, createElementVNode as d, createBlock as p, createCommentVNode as l, toDisplayString as c, ref as v, Fragment as y, renderList as f, createVNode as _, renderSlot as x, createTextVNode as k } from "vue";
|
|
2
|
+
const w = {
|
|
3
|
+
label: { type: String, default: "" },
|
|
4
|
+
loading: { type: Boolean, default: !1 },
|
|
5
|
+
disabled: { type: Boolean, default: !1 },
|
|
6
|
+
variant: {
|
|
7
|
+
type: String,
|
|
8
|
+
default: "solid",
|
|
9
|
+
options: ["outlined", "text", "ghost", "solid"]
|
|
10
|
+
},
|
|
11
|
+
icon: { type: String, default: "" },
|
|
12
|
+
iconClass: { type: String, default: "" },
|
|
13
|
+
iconPosition: {
|
|
14
|
+
type: String,
|
|
15
|
+
default: "right",
|
|
16
|
+
options: ["left", "right"]
|
|
17
|
+
},
|
|
18
|
+
rounded: { type: Boolean, default: !1 }
|
|
19
|
+
}, C = ["disabled"], P = /* @__PURE__ */ g({
|
|
20
|
+
__name: "Index",
|
|
21
|
+
props: w,
|
|
22
|
+
setup(t) {
|
|
23
|
+
const e = t, n = h(() => {
|
|
24
|
+
switch (e.variant) {
|
|
25
|
+
case "outlined":
|
|
26
|
+
return "!border-primary text-primary bg-transparent hover:bg-primary disabled:hover:bg-transparent disabled:hover:text-primary hover:text-white";
|
|
27
|
+
case "text":
|
|
28
|
+
return "bg-transparent text-primary hover:bg-gray-200 disabled:hover:bg-transparent disabled:hover:text-primary";
|
|
29
|
+
case "ghost":
|
|
30
|
+
return "text-primary bg-gray-100 hover:bg-gray-200 disabled:hover:bg-transparent disabled:hover:text-primary";
|
|
31
|
+
default:
|
|
32
|
+
return "bg-primary text-white hover:bg-primary/75 disabled:hover:bg-primary disabled:hover:text-white";
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
return (m, u) => {
|
|
36
|
+
const a = b("Icon");
|
|
37
|
+
return r(), o("button", {
|
|
38
|
+
type: "button",
|
|
39
|
+
disabled: e.disabled || e.loading,
|
|
40
|
+
class: i([
|
|
41
|
+
n.value,
|
|
42
|
+
{ "rounded-full": e.rounded },
|
|
43
|
+
"flex cursor-pointer items-center justify-center gap-2 rounded border border-transparent px-3 py-2 transition duration-200 disabled:cursor-not-allowed disabled:opacity-75 "
|
|
44
|
+
])
|
|
45
|
+
}, [
|
|
46
|
+
d("div", {
|
|
47
|
+
class: i([{ "justify-center": !e.icon }, "flex w-full items-center justify-between gap-2"])
|
|
48
|
+
}, [
|
|
49
|
+
e.label ? (r(), o("span", {
|
|
50
|
+
key: 0,
|
|
51
|
+
class: i({ "order-2": e.iconPosition === "left" })
|
|
52
|
+
}, c(e.label), 3)) : l("", !0),
|
|
53
|
+
e.icon && !e.loading ? (r(), p(a, {
|
|
54
|
+
key: 1,
|
|
55
|
+
icon: e.icon,
|
|
56
|
+
class: i(e.iconClass)
|
|
57
|
+
}, null, 8, ["icon", "class"])) : l("", !0)
|
|
58
|
+
], 2),
|
|
59
|
+
e.loading ? (r(), p(a, {
|
|
60
|
+
key: 0,
|
|
61
|
+
icon: "loading"
|
|
62
|
+
})) : l("", !0)
|
|
63
|
+
], 10, C);
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
}), S = { class: "w-full divide-y divide-gray-200 rounded border border-slate-200 bg-white" }, B = ["onClick"], I = { class: "title text-gray-600" }, N = {
|
|
67
|
+
key: 0,
|
|
68
|
+
class: "p-3 text-gray-500"
|
|
69
|
+
}, V = {
|
|
70
|
+
key: 1,
|
|
71
|
+
class: "px-3 py-6 text-center text-gray-500"
|
|
72
|
+
}, A = /* @__PURE__ */ g({
|
|
73
|
+
__name: "Index",
|
|
74
|
+
props: {
|
|
75
|
+
items: { type: Array, required: !0 }
|
|
76
|
+
},
|
|
77
|
+
setup(t) {
|
|
78
|
+
const e = v(null);
|
|
79
|
+
return (n, m) => {
|
|
80
|
+
const u = b("Icon");
|
|
81
|
+
return r(), o("div", S, [
|
|
82
|
+
t.items.length ? (r(!0), o(y, { key: 0 }, f(t.items, (a, s) => (r(), o("div", { key: s }, [
|
|
83
|
+
d("div", {
|
|
84
|
+
class: i([{ "bg-primary/5": e.value === s }, "hover:bg-primary/5 relative flex cursor-pointer justify-between gap-4 p-3 font-medium duration-100"]),
|
|
85
|
+
onClick: (j) => e.value = e.value === s ? null : s
|
|
86
|
+
}, [
|
|
87
|
+
d("span", I, c(a.title), 1),
|
|
88
|
+
_(u, {
|
|
89
|
+
icon: "chevron-down",
|
|
90
|
+
class: i([{ "rotate-180": e.value === s }, "icon text-[1.4rem] text-gray-400 duration-200"])
|
|
91
|
+
}, null, 8, ["class"])
|
|
92
|
+
], 10, B),
|
|
93
|
+
e.value === s ? (r(), o("div", N, [
|
|
94
|
+
a.slot ? x(n.$slots, a.slot, { key: 0 }) : (r(), o(y, { key: 1 }, [
|
|
95
|
+
k(c(a.content), 1)
|
|
96
|
+
], 64))
|
|
97
|
+
])) : l("", !0)
|
|
98
|
+
]))), 128)) : (r(), o("div", V, "No items to show"))
|
|
99
|
+
]);
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}), q = (t) => ({
|
|
103
|
+
install() {
|
|
104
|
+
if (!t || !t.colors) {
|
|
105
|
+
console.warn("No config provided for the theme settings");
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
$(t.colors);
|
|
109
|
+
}
|
|
110
|
+
}), $ = (t) => {
|
|
111
|
+
const e = document.documentElement;
|
|
112
|
+
for (const n in t)
|
|
113
|
+
t[n] && e.style.setProperty(`--ui-color-${n}`, t[n]);
|
|
114
|
+
};
|
|
115
|
+
export {
|
|
116
|
+
A as Accordion,
|
|
117
|
+
P as Button,
|
|
118
|
+
q as config
|
|
119
|
+
};
|
|
120
|
+
//# sourceMappingURL=index.js.map
|
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/components/Button/props.ts","../../src/components/Button/Index.vue","../../src/components/Accordion/Index.vue","../../src/utils/config.ts"],"sourcesContent":["import type { PropType } from \"vue\";\n\nexport const props = {\n label: { type: String, default: \"\" },\n loading: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n variant: {\n type: String as PropType<\"outlined\" | \"text\" | \"ghost\" | \"solid\">,\n default: \"solid\",\n options: [\"outlined\", \"text\", \"ghost\", \"solid\"],\n },\n icon: { type: String, default: \"\" },\n iconClass: { type: String, default: \"\" },\n iconPosition: {\n type: String as PropType<\"left\" | \"right\">,\n default: \"right\",\n options: [\"left\", \"right\"],\n },\n rounded: { type: Boolean, default: false },\n} as const;\n","<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { props as buttonProps } from \"./props\";\n\nconst props = defineProps(buttonProps);\n\nconst classes = computed(() => {\n switch (props.variant) {\n case \"outlined\":\n return \"!border-primary text-primary bg-transparent hover:bg-primary disabled:hover:bg-transparent disabled:hover:text-primary hover:text-white\";\n case \"text\":\n return \"bg-transparent text-primary hover:bg-gray-200 disabled:hover:bg-transparent disabled:hover:text-primary\";\n case \"ghost\":\n return \"text-primary bg-gray-100 hover:bg-gray-200 disabled:hover:bg-transparent disabled:hover:text-primary\";\n default:\n return \"bg-primary text-white hover:bg-primary/75 disabled:hover:bg-primary disabled:hover:text-white\"; // solid\n }\n});\n</script>\n\n<template>\n <!-- prettier-ignore -->\n <button \n type=\"button\" \n :disabled=\"props.disabled || props.loading\" \n :class=\"[\n classes, { 'rounded-full': props.rounded }, \n 'flex cursor-pointer items-center justify-center gap-2 rounded border border-transparent px-3 py-2 transition duration-200 disabled:cursor-not-allowed disabled:opacity-75 '\n ]\"\n >\n <div :class=\"{ 'justify-center': !props.icon }\" class=\"flex w-full items-center justify-between gap-2\">\n <span v-if=\"props.label\" :class=\"{ 'order-2': props.iconPosition === 'left' }\"> {{ props.label }} </span>\n <Icon v-if=\"props.icon && !props.loading\" :icon=\"props.icon\" :class=\"props.iconClass\" />\n </div>\n\n <Icon v-if=\"props.loading\" icon=\"loading\" />\n </button>\n</template>\n","<script setup lang=\"ts\">\nimport { ref } from \"vue\";\n\n// Props definition\n// `items` is an array of objects where each object represents an accordion item.\n// Each item has a `title` (string), `content` (string), and an optional `slot` (string) for custom slot rendering.\ndefineProps({\n items: { type: Array as () => { title: string; content: string; slot?: string }[], required: true },\n});\n\n// This ref holds the index of the currently active (opened) accordion item.\n// If `null`, no accordion item is open.\nconst activeIndex = ref<Number | null>(null);\n</script>\n\n<template>\n <!-- Accordion Container -->\n <div class=\"w-full divide-y divide-gray-200 rounded border border-slate-200 bg-white\">\n <!-- Iterate through items array -->\n <div v-for=\"(item, index) in items\" :key=\"index\" v-if=\"items.length\">\n <!-- Accordion Header -->\n <!-- Clicking toggles activeIndex between `index` and `null` (for collapse) -->\n <div :class=\"{ 'bg-primary/5': activeIndex === index }\" class=\"hover:bg-primary/5 relative flex cursor-pointer justify-between gap-4 p-3 font-medium duration-100\" @click=\"activeIndex = activeIndex === index ? null : index\">\n <!-- Accordion Title -->\n <span class=\"title text-gray-600\">{{ item.title }}</span>\n <!-- Chevron Icon -->\n <Icon icon=\"chevron-down\" :class=\"{ 'rotate-180': activeIndex === index }\" class=\"icon text-[1.4rem] text-gray-400 duration-200\" />\n </div>\n\n <!-- Accordion Body -->\n <div v-if=\"activeIndex === index\" class=\"p-3 text-gray-500\">\n <!-- If slot name is provided, render slot content -->\n <template v-if=\"item.slot\">\n <slot :name=\"item.slot\" />\n </template>\n <!-- Otherwise, render static content -->\n <template v-else>\n {{ item.content }}\n </template>\n </div>\n </div>\n\n <!-- Fallback message if no items provided -->\n <div class=\"px-3 py-6 text-center text-gray-500\" v-else>No items to show</div>\n </div>\n</template>\n","import type { Colors, config as Config } from \"@/types/config\";\n\n// create theme settings\nexport const config = (config: Config) => {\n return {\n install() {\n if (!config || !config.colors) {\n console.warn(\"No config provided for the theme settings\");\n return;\n }\n\n // apply colors\n applyCSSVars(config.colors);\n },\n };\n};\n\n// apply the colors to the root element\nconst applyCSSVars = (colors: Colors) => {\n const root = document.documentElement;\n\n // apply the colors to the root element\n for (const color in colors) {\n if (colors[color as keyof Colors]) {\n root.style.setProperty(`--ui-color-${color}`, colors[color as keyof Colors]);\n }\n }\n};\n"],"names":["props","__props","classes","computed","_createElementBlock","_normalizeClass","_createElementVNode","_toDisplayString","_createBlock","_component_Icon","activeIndex","ref","_openBlock","_hoisted_1","_Fragment","_renderList","item","index","_hoisted_3","_createVNode","_hoisted_4","_renderSlot","_ctx","_createTextVNode","_hoisted_5","config","applyCSSVars","colors","root","color"],"mappings":";AAEO,MAAMA,IAAQ;AAAA,EACnB,OAAO,EAAE,MAAM,QAAQ,SAAS,GAAA;AAAA,EAChC,SAAS,EAAE,MAAM,SAAS,SAAS,GAAA;AAAA,EACnC,UAAU,EAAE,MAAM,SAAS,SAAS,GAAA;AAAA,EACpC,SAAS;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS,CAAC,YAAY,QAAQ,SAAS,OAAO;AAAA,EAAA;AAAA,EAEhD,MAAM,EAAE,MAAM,QAAQ,SAAS,GAAA;AAAA,EAC/B,WAAW,EAAE,MAAM,QAAQ,SAAS,GAAA;AAAA,EACpC,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS,CAAC,QAAQ,OAAO;AAAA,EAAA;AAAA,EAE3B,SAAS,EAAE,MAAM,SAAS,SAAS,GAAA;AACrC;;;;ACfA,UAAMA,IAAQC,GAERC,IAAUC,EAAS,MAAM;AAC7B,cAAQH,EAAM,SAAA;AAAA,QACZ,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT;AACE,iBAAO;AAAA,MAAA;AAAA,IAEb,CAAC;;;kBAKCI,EAcS,UAAA;AAAA,QAbP,MAAK;AAAA,QACJ,UAAUJ,EAAM,YAAYA,EAAM;AAAA,QAClC,OAAKK,EAAA;AAAA,UAAUH,EAAA;AAAA,UAAO,EAAA,gBAAoBF,EAAM,QAAA;AAAA;;;QAKjDM,EAGM,OAAA;AAAA,UAHA,OAAKD,EAAA,CAAA,EAAA,kBAAA,CAAuBL,EAAM,KAAA,GAAc,gDAAgD,CAAA;AAAA,QAAA;UACxFA,EAAM,cAAlBI,EAAyG,QAAA;AAAA;YAA/E,OAAKC,EAAA,EAAA,WAAeL,EAAM,iBAAY,QAAA;AAAA,UAAA,GAAmBO,EAAAP,EAAM,KAAK,GAAA,CAAA;UAClFA,EAAM,QAAI,CAAKA,EAAM,gBAAjCQ,EAAwFC,GAAA;AAAA;YAA7C,MAAMT,EAAM;AAAA,YAAO,OAAKK,EAAEL,EAAM,SAAS;AAAA,UAAA;;QAG1EA,EAAM,gBAAlBQ,EAA4CC,GAAA;AAAA;UAAjB,MAAK;AAAA,QAAA;;;;;;;;;;;;;;;;ACvBpC,UAAMC,IAAcC,EAAmB,IAAI;;;AAKzC,aAAAC,EAAA,GAAAR,EA2BM,OA3BNS,GA2BM;AAAA,QAzBmDZ,EAAA,MAAM,UAA7DW,EAAA,EAAA,GAAAR,EAqBMU,GAAA,EAAA,KAAA,KAAAC,EArBuBd,EAAA,OAAK,CAArBe,GAAMC,YAAnBb,EAqBM,OAAA,EArB+B,KAAKa,KAAK;AAAA,UAG7CX,EAKM,OAAA;AAAA,YALA,OAAKD,EAAA,CAAA,EAAA,gBAAoBK,EAAA,UAAgBO,KAAe,oGAAoG,CAAA;AAAA,YAAE,gBAAOP,EAAA,QAAcA,YAAgBO,WAAeA;AAAA,UAAA;YAEtNX,EAAyD,QAAzDY,GAAyDX,EAApBS,EAAK,KAAK,GAAA,CAAA;AAAA,YAE/CG,EAAmIV,GAAA;AAAA,cAA7H,MAAK;AAAA,cAAgB,OAAKJ,EAAA,CAAA,EAAA,cAAkBK,EAAA,UAAgBO,EAAA,GAAe,+CAA+C,CAAA;AAAA,YAAA;;UAIvHP,EAAA,UAAgBO,KAA3BL,KAAAR,EASM,OATNgB,GASM;AAAA,YAPYJ,EAAK,OACnBK,EAA0BC,EAAA,QAAbN,EAAK,MAAI,EAAA,KAAA,GAAA,UAGxBZ,EAEWU,GAAA,EAAA,KAAA,KAAA;AAAA,cADNS,EAAAhB,EAAAS,EAAK,OAAO,GAAA,CAAA;AAAA,YAAA;;4BAMrBZ,EAA8E,OAA9EoB,GAAwD,kBAAgB;AAAA,MAAA;;;ICxC/DC,IAAS,CAACA,OACd;AAAA,EACL,UAAU;AACR,QAAI,CAACA,KAAU,CAACA,EAAO,QAAQ;AAC7B,cAAQ,KAAK,2CAA2C;AACxD;AAAA,IACF;AAGA,IAAAC,EAAaD,EAAO,MAAM;AAAA,EAC5B;AAAA,IAKEC,IAAe,CAACC,MAAmB;AACvC,QAAMC,IAAO,SAAS;AAGtB,aAAWC,KAASF;AAClB,IAAIA,EAAOE,CAAqB,KAC9BD,EAAK,MAAM,YAAY,cAAcC,CAAK,IAAIF,EAAOE,CAAqB,CAAC;AAGjF;"}
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "veloce-vue",
|
|
3
|
+
"version": "0.9.0",
|
|
4
|
+
"private": false,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"description": "A Vue 3 library built with Vite + TypeScript + Tailwind CSS.",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"author": "Sheraz <sherazarshad419@gmail.com>",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/SherazJutt/veloce-vue.git"
|
|
12
|
+
},
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/SherazJutt/veloce-vue/issues"
|
|
15
|
+
},
|
|
16
|
+
"homepage": "https://github.com/SherazJutt/veloce-vue#readme",
|
|
17
|
+
"main": "./index.cjs",
|
|
18
|
+
"module": "./index.js",
|
|
19
|
+
"types": "./exports.d.ts",
|
|
20
|
+
"style": "./ui-library.css",
|
|
21
|
+
"exports": {
|
|
22
|
+
".": {
|
|
23
|
+
"import": "./index.js",
|
|
24
|
+
"require": "./index.cjs",
|
|
25
|
+
"types": "./exports.d.ts",
|
|
26
|
+
"default": "./index.js"
|
|
27
|
+
},
|
|
28
|
+
"./styles.css": "./ui-library.css"
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"**/*"
|
|
32
|
+
],
|
|
33
|
+
"sideEffects": [
|
|
34
|
+
"./styles.css"
|
|
35
|
+
],
|
|
36
|
+
"peerDependencies": {
|
|
37
|
+
"vue": "^3.3.0"
|
|
38
|
+
},
|
|
39
|
+
"keywords": [
|
|
40
|
+
"vue3",
|
|
41
|
+
"tailwindcss",
|
|
42
|
+
"component library",
|
|
43
|
+
"vue",
|
|
44
|
+
"vuejs",
|
|
45
|
+
"vue.js",
|
|
46
|
+
"typescript",
|
|
47
|
+
"veloce-vue",
|
|
48
|
+
"ui",
|
|
49
|
+
"tailwind",
|
|
50
|
+
"framework",
|
|
51
|
+
"ui-framework"
|
|
52
|
+
]
|
|
53
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
declare const _default: typeof __VLS_export;
|
|
3
|
+
export default _default;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
title: string;
|
|
3
|
+
component: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
4
|
+
};
|
|
5
|
+
export default _default;
|
|
6
|
+
export declare const Home: {};
|
package/veloce-vue.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-400:oklch(70.4% .191 22.216);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-700:oklch(37.2% .044 257.287);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-800:oklch(27.8% .033 256.848);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--font-weight-medium:500;--font-weight-semibold:600;--radius-sm:.25rem;--radius-md:.375rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary:var(--ui-color-primary)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing)*0)}.-top-2\.5{top:calc(var(--spacing)*-2.5)}.-top-9{top:calc(var(--spacing)*-9)}.top-0{top:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-\[9px\]{top:9px}.top-full{top:100%}.-right-full{right:-100%}.right-0{right:calc(var(--spacing)*0)}.right-full{right:100%}.-bottom-1{bottom:calc(var(--spacing)*-1)}.-bottom-full{bottom:-100%}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-full{bottom:100%}.-left-full{left:-100%}.left-0{left:calc(var(--spacing)*0)}.left-1\/2{left:50%}.left-3{left:calc(var(--spacing)*3)}.left-full{left:100%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[49\]{z-index:49}.order-2{order:2}.m-0{margin:calc(var(--spacing)*0)}.mx-auto{margin-inline:auto}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.-ml-1{margin-left:calc(var(--spacing)*-1)}.-ml-2{margin-left:calc(var(--spacing)*-2)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-auto{margin-left:auto}.flex{display:flex}.size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.size-full{width:100%;height:100%}.h-2{height:calc(var(--spacing)*2)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-\[1px\]{height:1px}.h-\[42px\]{height:42px}.h-full{height:100%}.h-screen{height:100vh}.max-h-\[90dvh\]{max-height:90dvh}.max-h-\[calc\(100dvh-100px\)\]{max-height:calc(100dvh - 100px)}.w-2{width:calc(var(--spacing)*2)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-10{width:calc(var(--spacing)*10)}.w-\[1px\]{width:1px}.w-\[200px\]{width:200px}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-screen{width:100vw}.max-w-\[360px\]{max-width:360px}.max-w-\[600px\]{max-width:600px}.min-w-full{min-width:100%}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.rotate-45{rotate:45deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-2{gap:calc(var(--spacing)*2)}.gap-4{gap:calc(var(--spacing)*4)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-gray-200>:not(:last-child)){border-color:var(--color-gray-200)}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\!border-primary{border-color:var(--color-primary)!important}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-primary{border-color:var(--color-primary)}.border-slate-200{border-color:var(--color-slate-200)}.border-transparent{border-color:#0000}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black)40%,transparent)}}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-primary,.bg-primary\/5{background-color:var(--color-primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/5{background-color:color-mix(in oklab,var(--color-primary)5%,transparent)}}.bg-primary\/10{background-color:var(--color-primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--color-primary)10%,transparent)}}.bg-red-400{background-color:var(--color-red-400)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.\!p-1{padding:calc(var(--spacing)*1)!important}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.\!px-3{padding-inline:calc(var(--spacing)*3)!important}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-\[2px\]{padding-inline:2px}.\!py-1{padding-block:calc(var(--spacing)*1)!important}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-4{padding-block:calc(var(--spacing)*4)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-3{padding-top:calc(var(--spacing)*3)}.pl-5{padding-left:calc(var(--spacing)*5)}.text-center{text-align:center}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[1\.4rem\]{font-size:1.4rem}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-black{color:var(--color-black)}.text-gray-200{color:var(--color-gray-200)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-primary{color:var(--color-primary)}.text-slate-500{color:var(--color-slate-500)}.text-white{color:var(--color-white)}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-slate-500\/10{--tw-shadow-color:#62748e1a}@supports (color:color-mix(in lab,red,red)){.shadow-slate-500\/10{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-slate-500)10%,transparent)var(--tw-shadow-alpha),transparent)}}.shadow-slate-700\/10{--tw-shadow-color:#3141581a}@supports (color:color-mix(in lab,red,red)){.shadow-slate-700\/10{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-slate-700)10%,transparent)var(--tw-shadow-alpha),transparent)}}.outline-primary{outline-color:var(--color-primary)}.backdrop-blur-\[2px\]{--tw-backdrop-blur:blur(2px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.select-none{-webkit-user-select:none;user-select:none}.peer-placeholder-shown\:text-gray-400:is(:where(.peer):placeholder-shown~*){color:var(--color-gray-400)}.peer-focus\:-top-2\.5:is(:where(.peer):focus~*){top:calc(var(--spacing)*-2.5)}.peer-focus\:text-sm:is(:where(.peer):focus~*){font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.peer-focus\:text-black:is(:where(.peer):focus~*){color:var(--color-black)}@media (hover:hover){.hover\:border-primary\/60:hover{border-color:var(--color-primary)}@supports (color:color-mix(in lab,red,red)){.hover\:border-primary\/60:hover{border-color:color-mix(in oklab,var(--color-primary)60%,transparent)}}.hover\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\:bg-primary:hover,.hover\:bg-primary\/5:hover{background-color:var(--color-primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/5:hover{background-color:color-mix(in oklab,var(--color-primary)5%,transparent)}}.hover\:bg-primary\/75:hover{background-color:var(--color-primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/75:hover{background-color:color-mix(in oklab,var(--color-primary)75%,transparent)}}.hover\:text-white:hover{color:var(--color-white)}}.focus\:border-primary:focus{border-color:var(--color-primary)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-75:disabled{opacity:.75}@media (hover:hover){.disabled\:hover\:bg-primary:disabled:hover{background-color:var(--color-primary)}.disabled\:hover\:bg-transparent:disabled:hover{background-color:#0000}.disabled\:hover\:text-primary:disabled:hover{color:var(--color-primary)}.disabled\:hover\:text-white:disabled:hover{color:var(--color-white)}}@media (min-width:576px){.sm\:max-h-\[75vh\]{max-height:75vh}.sm\:max-h-\[95dvh\]{max-height:95dvh}.sm\:w-\[90\%\]{width:90%}}}:root{--ui-color-primary:#523ae4;--ui-color-secondary:#0f0d0d;--ui-color-accent:#f59e0b}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background-color:var(--color-gray-200)}::-webkit-scrollbar-thumb{background-color:var(--color-primary)}::-webkit-scrollbar-thumb:hover{background-color:var(--color-gray-600)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}
|