@gspa/ui 0.1.1 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -0
- package/dist/_plugin-vue_export-helper-BHFhmbuH.cjs +1 -0
- package/dist/_plugin-vue_export-helper-CHgC5LLL.js +9 -0
- package/dist/components/Accordion.cjs +1 -0
- package/dist/components/Accordion.js +192 -0
- package/dist/components/AccordionItem.cjs +1 -0
- package/dist/components/AccordionItem.js +109 -0
- package/dist/components/AddReminderModal.cjs +1 -0
- package/dist/components/AddReminderModal.js +107 -0
- package/dist/components/Alert.cjs +1 -0
- package/dist/components/Alert.js +222 -0
- package/dist/components/Avatar.cjs +1 -0
- package/dist/components/Avatar.js +86 -0
- package/dist/components/Badge.cjs +1 -0
- package/dist/components/Badge.js +109 -0
- package/dist/components/Breadcrumb.cjs +1 -0
- package/dist/components/Breadcrumb.js +72 -0
- package/dist/components/Button.cjs +1 -0
- package/dist/components/Button.js +190 -0
- package/dist/components/ButtonGroup.cjs +1 -0
- package/dist/components/ButtonGroup.js +46 -0
- package/dist/components/Calendar.cjs +1 -0
- package/dist/components/Calendar.js +341 -0
- package/dist/components/Card.cjs +1 -0
- package/dist/components/Card.js +316 -0
- package/dist/components/CardBody.cjs +1 -0
- package/dist/components/CardBody.js +34 -0
- package/dist/components/CardContent.cjs +1 -0
- package/dist/components/CardContent.js +17 -0
- package/dist/components/CardFooter.cjs +1 -0
- package/dist/components/CardFooter.js +34 -0
- package/dist/components/CardHeader.cjs +1 -0
- package/dist/components/CardHeader.js +91 -0
- package/dist/components/CardTitle.cjs +1 -0
- package/dist/components/CardTitle.js +17 -0
- package/dist/components/Checkbox.cjs +1 -0
- package/dist/components/Checkbox.js +185 -0
- package/dist/components/CircularProgress.cjs +1 -0
- package/dist/components/CircularProgress.js +141 -0
- package/dist/components/DataTable.cjs +1 -0
- package/dist/components/DataTable.js +863 -0
- package/dist/components/DataTableCell.cjs +1 -0
- package/dist/components/DataTableCell.js +95 -0
- package/dist/components/DataTableFilters.cjs +1 -0
- package/dist/components/DataTableFilters.js +519 -0
- package/dist/components/DataTableHeader.cjs +1 -0
- package/dist/components/DataTableHeader.js +116 -0
- package/dist/components/DataTablePagination.cjs +1 -0
- package/dist/components/DataTablePagination.js +290 -0
- package/dist/components/DataTableRow.cjs +1 -0
- package/dist/components/DataTableRow.js +199 -0
- package/dist/components/DataTableToolBar.cjs +1 -0
- package/dist/components/DataTableToolBar.js +477 -0
- package/dist/components/DatePicker.cjs +1 -0
- package/dist/components/DatePicker.js +401 -0
- package/dist/components/Divider.cjs +1 -0
- package/dist/components/Divider.js +103 -0
- package/dist/components/Dropdown.cjs +1 -0
- package/dist/components/Dropdown.js +104 -0
- package/dist/components/DropdownItem.cjs +1 -0
- package/dist/components/DropdownItem.js +60 -0
- package/dist/components/EventsCalendar.cjs +1 -0
- package/dist/components/EventsCalendar.js +863 -0
- package/dist/components/FileUpload.cjs +1 -0
- package/dist/components/FileUpload.js +195 -0
- package/dist/components/FilterDrawer.cjs +1 -0
- package/dist/components/FilterDrawer.js +412 -0
- package/dist/components/Footer.cjs +1 -0
- package/dist/components/Footer.js +157 -0
- package/dist/components/FormField.cjs +1 -0
- package/dist/components/FormField.js +190 -0
- package/dist/components/Graph.cjs +1 -0
- package/dist/components/Graph.js +164 -0
- package/dist/components/GraphFilters.cjs +1 -0
- package/dist/components/GraphFilters.js +305 -0
- package/dist/components/Header.cjs +1 -0
- package/dist/components/Header.js +674 -0
- package/dist/components/Icon.cjs +1 -0
- package/dist/components/Icon.js +51 -0
- package/dist/components/Image.cjs +1 -0
- package/dist/components/Image.js +112 -0
- package/dist/components/Input.cjs +1 -0
- package/dist/components/Input.js +166 -0
- package/dist/components/InputGroup.cjs +1 -0
- package/dist/components/InputGroup.js +45 -0
- package/dist/components/Label.cjs +1 -0
- package/dist/components/Label.js +46 -0
- package/dist/components/Link.cjs +1 -0
- package/dist/components/Link.js +119 -0
- package/dist/components/ListItem.cjs +1 -0
- package/dist/components/ListItem.js +89 -0
- package/dist/components/Loader.cjs +1 -0
- package/dist/components/Loader.js +154 -0
- package/dist/components/Logo.cjs +1 -0
- package/dist/components/Logo.js +67 -0
- package/dist/components/MenuItem.cjs +1 -0
- package/dist/components/MenuItem.js +66 -0
- package/dist/components/Modal.cjs +1 -0
- package/dist/components/Modal.js +110 -0
- package/dist/components/ModalBody.cjs +1 -0
- package/dist/components/ModalBody.js +33 -0
- package/dist/components/ModalFooter.cjs +1 -0
- package/dist/components/ModalFooter.js +33 -0
- package/dist/components/ModalHeader.cjs +1 -0
- package/dist/components/ModalHeader.js +24 -0
- package/dist/components/MultiSelect.cjs +1 -0
- package/dist/components/MultiSelect.js +211 -0
- package/dist/components/Notification.cjs +1 -0
- package/dist/components/Notification.js +121 -0
- package/dist/components/Option.cjs +1 -0
- package/dist/components/Option.js +44 -0
- package/dist/components/Progress.cjs +1 -0
- package/dist/components/Progress.js +77 -0
- package/dist/components/ProgressBar.cjs +1 -0
- package/dist/components/ProgressBar.js +101 -0
- package/dist/components/Radio.cjs +1 -0
- package/dist/components/Radio.js +81 -0
- package/dist/components/RailNav.cjs +1 -0
- package/dist/components/RailNav.js +124 -0
- package/dist/components/ReminderConfig.cjs +1 -0
- package/dist/components/ReminderConfig.js +375 -0
- package/dist/components/ReusableForm.cjs +1 -0
- package/dist/components/ReusableForm.js +657 -0
- package/dist/components/ReusableFormModal.cjs +1 -0
- package/dist/components/ReusableFormModal.js +112 -0
- package/dist/components/RightDrawer.cjs +1 -0
- package/dist/components/RightDrawer.js +143 -0
- package/dist/components/Search.cjs +1 -0
- package/dist/components/Search.js +252 -0
- package/dist/components/Select.cjs +1 -0
- package/dist/components/Select.js +243 -0
- package/dist/components/Sidebar.cjs +1 -0
- package/dist/components/Sidebar.js +372 -0
- package/dist/components/Slider.cjs +1 -0
- package/dist/components/Slider.js +42 -0
- package/dist/components/Spinner.cjs +1 -0
- package/dist/components/Spinner.js +87 -0
- package/dist/components/Stepper.cjs +1 -0
- package/dist/components/Stepper.js +12 -0
- package/dist/components/StepperItem.cjs +1 -0
- package/dist/components/StepperItem.js +33 -0
- package/dist/components/Switch.cjs +1 -0
- package/dist/components/Switch.js +112 -0
- package/dist/components/Tab.cjs +1 -0
- package/dist/components/Tab.js +134 -0
- package/dist/components/TabPanel.cjs +1 -0
- package/dist/components/TabPanel.js +49 -0
- package/dist/components/Text.cjs +1 -0
- package/dist/components/Text.js +84 -0
- package/dist/components/Textarea.cjs +1 -0
- package/dist/components/Textarea.js +102 -0
- package/dist/components/ThemeConfigurator.cjs +1 -0
- package/dist/components/ThemeConfigurator.js +50 -0
- package/dist/components/Timeline.cjs +1 -0
- package/dist/components/Timeline.js +24 -0
- package/dist/components/TimelineItem.cjs +1 -0
- package/dist/components/TimelineItem.js +63 -0
- package/dist/components/Toast.cjs +1 -0
- package/dist/components/Toast.js +231 -0
- package/dist/components/Tooltip.cjs +1 -0
- package/dist/components/Tooltip.js +124 -0
- package/dist/components/Typography.cjs +1 -0
- package/dist/components/Typography.js +267 -0
- package/dist/components/charts/BarChart.cjs +1 -0
- package/dist/components/charts/BarChart.js +323 -0
- package/dist/components/charts/LineChart.cjs +1 -0
- package/dist/components/charts/LineChart.js +322 -0
- package/dist/components/charts/PieChart.cjs +1 -0
- package/dist/components/charts/PieChart.js +311 -0
- package/dist/components/charts/StackedBarChart.cjs +1 -0
- package/dist/components/charts/StackedBarChart.js +348 -0
- package/dist/components/widgets/DashboardWidget.cjs +1 -0
- package/dist/components/widgets/DashboardWidget.js +309 -0
- package/dist/directives/tooltip.cjs +47 -0
- package/dist/directives/tooltip.js +115 -0
- package/dist/index.cjs +1 -0
- package/dist/index.esm.js +310 -19533
- package/dist/layouts/AuthLayout.cjs +1 -0
- package/dist/layouts/AuthLayout.js +190 -0
- package/dist/layouts/DashboardLayout.cjs +1 -0
- package/dist/layouts/DashboardLayout.js +244 -0
- package/dist/layouts/DefaultLayout.cjs +1 -0
- package/dist/layouts/DefaultLayout.js +94 -0
- package/dist/layouts/ErrorLayout.cjs +1 -0
- package/dist/layouts/ErrorLayout.js +452 -0
- package/dist/lib/auth.cjs +1 -0
- package/dist/lib/auth.js +4 -0
- package/dist/lib/theme.cjs +1 -0
- package/dist/lib/theme.js +135 -0
- package/dist/lib/toast.cjs +1 -0
- package/dist/lib/toast.js +81 -0
- package/dist/src/__tests__/AuthLayout.spec.d.ts +2 -0
- package/dist/src/__tests__/AuthLayout.spec.d.ts.map +1 -0
- package/dist/src/layouts/AuthLayout.vue.d.ts +10 -6
- package/dist/src/layouts/AuthLayout.vue.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/cn.cjs +1 -0
- package/dist/utils/cn.js +7 -0
- package/package.json +43 -11
- package/dist/applogo.png +0 -0
- package/dist/favicon.ico +0 -0
- package/dist/index.js +0 -605
- package/dist/logo.png +0 -0
- package/dist/stlbacklogo.jpeg +0 -0
- package/dist/stlbacklogo.png +0 -0
package/README.md
CHANGED
|
@@ -190,6 +190,24 @@ describe('Component', () => {
|
|
|
190
190
|
|
|
191
191
|
This document provides comprehensive usage examples and API reference for all Vue components and directives in GSPA UI.
|
|
192
192
|
|
|
193
|
+
## Importing components
|
|
194
|
+
|
|
195
|
+
Import individual components when the application does not need the global plugin. Granular exports keep unrelated components out of the application bundle:
|
|
196
|
+
|
|
197
|
+
```js
|
|
198
|
+
import Button from '@gspa/ui/components/Button'
|
|
199
|
+
import AuthLayout from '@gspa/ui/layouts/AuthLayout'
|
|
200
|
+
import '@gspa/ui/css'
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Nested components use the same convention:
|
|
204
|
+
|
|
205
|
+
```js
|
|
206
|
+
import BarChart from '@gspa/ui/components/charts/BarChart'
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Named imports from `@gspa/ui` remain tree-shakeable. The default `VueUI` plugin intentionally registers every component and should only be used when an application needs the complete library.
|
|
210
|
+
|
|
193
211
|
## Button Authorization Access Control
|
|
194
212
|
|
|
195
213
|
`Button` supports access-control props directly:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const e=(t,o)=>{const c=t.__vccOpts||t;for(const[r,s]of o)c[r]=s;return c};exports._export_sfc=e;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),d=require("class-variance-authority"),c=require("../utils/cn.cjs"),B=["id","aria-expanded","aria-controls","onClick"],_={class:"flex items-center flex-1 min-w-0"},z={key:0},E=["id","aria-labelledby"],$={key:0},N={__name:"Accordion",props:{items:{type:Array,required:!0},modelValue:{type:[Number,Array],default:null},multiple:Boolean,variant:{type:String,default:"default",validator:i=>["default","bordered","filled","flush"].includes(i)},size:{type:String,default:"md",validator:i=>["sm","md","lg"].includes(i)},disabled:Boolean},emits:["update:modelValue","change"],setup(i,{emit:m}){const v={render(){return e.h("svg",{fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor"},[e.h("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m19.5 8.25-7.5 7.5-7.5-7.5"})])}},t=i,u=m,l=e.ref(t.multiple?Array.isArray(t.modelValue)?[...t.modelValue]:[]:typeof t.modelValue=="number"?[t.modelValue]:[]),p=a=>{if(!(t.disabled||t.items[a]?.disabled)){if(t.multiple){const n=l.value.indexOf(a);n>-1?l.value.splice(n,1):l.value.push(a),u("update:modelValue",[...l.value])}else{const n=l.value.includes(a)?null:a;l.value=n!==null?[n]:[],u("update:modelValue",n)}u("change",{index:a,expanded:l.value.includes(a)})}},s=a=>l.value.includes(a),f=d.cva("w-full",{variants:{variant:{default:"space-y-1",bordered:"space-y-3",filled:"space-y-3",flush:"divide-y divide-slate-200"}}}),h=d.cva("transition-all duration-200",{variants:{variant:{default:" border ui-border-strong rounded-lg overflow-hidden shadow-sm hover:shadow-md",bordered:" border-2 ui-border-strong rounded-xl overflow-hidden hover:border-(--ui-border)",filled:" border ui-border-strong rounded-xl overflow-hidden shadow-sm",flush:""}}}),b=d.cva("flex items-center justify-between w-full text-left transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-(--ui-primary) focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",{variants:{variant:{default:"hover:bg-(--ui-surface-strong)",bordered:"hover:bg-[color:color-mix(in oklab, var(--ui-primary-soft), transparent 50%)]",filled:"hover:bg-[color:color-mix(in oklab, var(--ui-surface), transparent 30%)]",flush:"hover:bg-(--ui-surface)"},size:{sm:"px-4 py-3",md:"px-5 py-4",lg:"px-6 py-5"}}}),y=d.cva("ml-4 shrink-0 ui-text transition-all duration-200",{variants:{expanded:{true:"rotate-180 ui-primary",false:""}}}),g=d.cva("overflow-hidden ui-text ui-surface",{variants:{size:{sm:"px-4 py-3 text-sm",md:"px-5 py-4 text-sm",lg:"px-6 py-5 text-base"}}}),k=e.computed(()=>c.cn(f({variant:t.variant}))),V=e.computed(()=>c.cn(h({variant:t.variant}))),C=a=>c.cn(b({variant:t.variant,size:t.size}),s(a)&&t.variant==="bordered"&&"bg-[color:color-mix(in oklab, var(--ui-primary-soft), transparent 70%)] border-(--ui-border-strong)",s(a)&&t.variant==="filled"&&"ui-surface",s(a)&&t.variant==="default"&&"ui-bg",(t.disabled||t.items[a]?.disabled)&&"cursor-not-allowed opacity-50"),w=a=>c.cn(y({expanded:s(a)})),x=e.computed(()=>c.cn(g({size:t.size})));return e.watch(()=>t.modelValue,a=>{t.multiple?l.value=Array.isArray(a)?[...a]:[]:l.value=typeof a=="number"?[a]:[]}),(a,n)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(k.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.items,(o,r)=>(e.openBlock(),e.createElementBlock("div",{key:o.id||r,class:e.normalizeClass(V.value)},[e.createElementVNode("button",{id:`header-${o.id||r}`,class:e.normalizeClass(C(r)),"aria-expanded":s(r),"aria-controls":`panel-${o.id||r}`,onClick:S=>p(r)},[e.createElementVNode("div",_,[e.renderSlot(a.$slots,`header-${r}`,{item:o,index:r,isExpanded:s(r)},()=>[o.title?(e.openBlock(),e.createElementBlock("div",z,e.toDisplayString(o.title),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",{class:e.normalizeClass(w(r))},[e.createVNode(v,{class:"w-5 h-5 transition-transform duration-200"})],2)],10,B),e.createVNode(e.Transition,{"enter-active-class":"transition-all duration-300 ease-out","enter-from-class":"opacity-0 max-h-0","enter-to-class":"opacity-100 max-h-[600px]","leave-active-class":"transition-all duration-200 ease-in","leave-from-class":"opacity-100 max-h-[600px]","leave-to-class":"opacity-0 max-h-0"},{default:e.withCtx(()=>[s(r)?(e.openBlock(),e.createElementBlock("div",{key:0,id:`panel-${o.id||r}`,class:e.normalizeClass(x.value),"aria-labelledby":`header-${o.id||r}`,role:"region"},[e.renderSlot(a.$slots,`content-${r}`,{item:o,index:r},()=>[e.renderSlot(a.$slots,"content",{item:o,index:r},()=>[o.content?(e.openBlock(),e.createElementBlock("div",$,e.toDisplayString(o.content),1)):e.createCommentVNode("",!0)])])],10,E)):e.createCommentVNode("",!0)]),_:2},1024)],2))),128))],2))}};exports.default=N;
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { ref as j, computed as m, watch as D, createElementBlock as n, openBlock as d, normalizeClass as u, Fragment as q, renderList as F, createElementVNode as f, createVNode as y, renderSlot as h, createCommentVNode as b, toDisplayString as g, Transition as L, withCtx as O, h as w } from "vue";
|
|
2
|
+
import { cva as c } from "class-variance-authority";
|
|
3
|
+
import { cn as p } from "../utils/cn.js";
|
|
4
|
+
const T = ["id", "aria-expanded", "aria-controls", "onClick"], G = { class: "flex items-center flex-1 min-w-0" }, H = { key: 0 }, J = ["id", "aria-labelledby"], K = { key: 0 }, U = {
|
|
5
|
+
__name: "Accordion",
|
|
6
|
+
props: {
|
|
7
|
+
items: {
|
|
8
|
+
type: Array,
|
|
9
|
+
required: !0
|
|
10
|
+
},
|
|
11
|
+
modelValue: {
|
|
12
|
+
type: [Number, Array],
|
|
13
|
+
default: null
|
|
14
|
+
},
|
|
15
|
+
multiple: Boolean,
|
|
16
|
+
variant: {
|
|
17
|
+
type: String,
|
|
18
|
+
default: "default",
|
|
19
|
+
validator: (i) => ["default", "bordered", "filled", "flush"].includes(i)
|
|
20
|
+
},
|
|
21
|
+
size: {
|
|
22
|
+
type: String,
|
|
23
|
+
default: "md",
|
|
24
|
+
validator: (i) => ["sm", "md", "lg"].includes(i)
|
|
25
|
+
},
|
|
26
|
+
disabled: Boolean
|
|
27
|
+
},
|
|
28
|
+
emits: ["update:modelValue", "change"],
|
|
29
|
+
setup(i, { emit: k }) {
|
|
30
|
+
const x = {
|
|
31
|
+
render() {
|
|
32
|
+
return w("svg", {
|
|
33
|
+
fill: "none",
|
|
34
|
+
viewBox: "0 0 24 24",
|
|
35
|
+
"stroke-width": "1.5",
|
|
36
|
+
stroke: "currentColor"
|
|
37
|
+
}, [
|
|
38
|
+
w("path", {
|
|
39
|
+
"stroke-linecap": "round",
|
|
40
|
+
"stroke-linejoin": "round",
|
|
41
|
+
d: "m19.5 8.25-7.5 7.5-7.5-7.5"
|
|
42
|
+
})
|
|
43
|
+
]);
|
|
44
|
+
}
|
|
45
|
+
}, a = i, v = k, o = j(
|
|
46
|
+
a.multiple ? Array.isArray(a.modelValue) ? [...a.modelValue] : [] : typeof a.modelValue == "number" ? [a.modelValue] : []
|
|
47
|
+
), V = (e) => {
|
|
48
|
+
if (!(a.disabled || a.items[e]?.disabled)) {
|
|
49
|
+
if (a.multiple) {
|
|
50
|
+
const l = o.value.indexOf(e);
|
|
51
|
+
l > -1 ? o.value.splice(l, 1) : o.value.push(e), v("update:modelValue", [...o.value]);
|
|
52
|
+
} else {
|
|
53
|
+
const l = o.value.includes(e) ? null : e;
|
|
54
|
+
o.value = l !== null ? [l] : [], v("update:modelValue", l);
|
|
55
|
+
}
|
|
56
|
+
v("change", { index: e, expanded: o.value.includes(e) });
|
|
57
|
+
}
|
|
58
|
+
}, s = (e) => o.value.includes(e), C = c("w-full", {
|
|
59
|
+
variants: {
|
|
60
|
+
variant: {
|
|
61
|
+
default: "space-y-1",
|
|
62
|
+
bordered: "space-y-3",
|
|
63
|
+
filled: "space-y-3",
|
|
64
|
+
flush: "divide-y divide-slate-200"
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}), _ = c("transition-all duration-200", {
|
|
68
|
+
variants: {
|
|
69
|
+
variant: {
|
|
70
|
+
default: " border ui-border-strong rounded-lg overflow-hidden shadow-sm hover:shadow-md",
|
|
71
|
+
bordered: " border-2 ui-border-strong rounded-xl overflow-hidden hover:border-(--ui-border)",
|
|
72
|
+
filled: " border ui-border-strong rounded-xl overflow-hidden shadow-sm",
|
|
73
|
+
flush: ""
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}), $ = c(
|
|
77
|
+
"flex items-center justify-between w-full text-left transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-(--ui-primary) focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
|
|
78
|
+
{
|
|
79
|
+
variants: {
|
|
80
|
+
variant: {
|
|
81
|
+
default: "hover:bg-(--ui-surface-strong)",
|
|
82
|
+
bordered: "hover:bg-[color:color-mix(in oklab, var(--ui-primary-soft), transparent 50%)]",
|
|
83
|
+
filled: "hover:bg-[color:color-mix(in oklab, var(--ui-surface), transparent 30%)]",
|
|
84
|
+
flush: "hover:bg-(--ui-surface)"
|
|
85
|
+
},
|
|
86
|
+
size: {
|
|
87
|
+
sm: "px-4 py-3",
|
|
88
|
+
md: "px-5 py-4",
|
|
89
|
+
lg: "px-6 py-5"
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
), z = c("ml-4 shrink-0 ui-text transition-all duration-200", {
|
|
94
|
+
variants: {
|
|
95
|
+
expanded: {
|
|
96
|
+
true: "rotate-180 ui-primary",
|
|
97
|
+
false: ""
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}), A = c("overflow-hidden ui-text ui-surface", {
|
|
101
|
+
variants: {
|
|
102
|
+
size: {
|
|
103
|
+
sm: "px-4 py-3 text-sm",
|
|
104
|
+
md: "px-5 py-4 text-sm",
|
|
105
|
+
lg: "px-6 py-5 text-base"
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}), B = m(
|
|
109
|
+
() => p(C({ variant: a.variant }))
|
|
110
|
+
), E = m(
|
|
111
|
+
() => p(_({ variant: a.variant }))
|
|
112
|
+
), N = (e) => p(
|
|
113
|
+
$({ variant: a.variant, size: a.size }),
|
|
114
|
+
s(e) && a.variant === "bordered" && "bg-[color:color-mix(in oklab, var(--ui-primary-soft), transparent 70%)] border-(--ui-border-strong)",
|
|
115
|
+
s(e) && a.variant === "filled" && "ui-surface",
|
|
116
|
+
s(e) && a.variant === "default" && "ui-bg",
|
|
117
|
+
(a.disabled || a.items[e]?.disabled) && "cursor-not-allowed opacity-50"
|
|
118
|
+
), S = (e) => p(z({ expanded: s(e) })), I = m(
|
|
119
|
+
() => p(A({ size: a.size }))
|
|
120
|
+
);
|
|
121
|
+
return D(
|
|
122
|
+
() => a.modelValue,
|
|
123
|
+
(e) => {
|
|
124
|
+
a.multiple ? o.value = Array.isArray(e) ? [...e] : [] : o.value = typeof e == "number" ? [e] : [];
|
|
125
|
+
}
|
|
126
|
+
), (e, l) => (d(), n("div", {
|
|
127
|
+
class: u(B.value)
|
|
128
|
+
}, [
|
|
129
|
+
(d(!0), n(q, null, F(i.items, (t, r) => (d(), n("div", {
|
|
130
|
+
key: t.id || r,
|
|
131
|
+
class: u(E.value)
|
|
132
|
+
}, [
|
|
133
|
+
f("button", {
|
|
134
|
+
id: `header-${t.id || r}`,
|
|
135
|
+
class: u(N(r)),
|
|
136
|
+
"aria-expanded": s(r),
|
|
137
|
+
"aria-controls": `panel-${t.id || r}`,
|
|
138
|
+
onClick: (M) => V(r)
|
|
139
|
+
}, [
|
|
140
|
+
f("div", G, [
|
|
141
|
+
h(e.$slots, `header-${r}`, {
|
|
142
|
+
item: t,
|
|
143
|
+
index: r,
|
|
144
|
+
isExpanded: s(r)
|
|
145
|
+
}, () => [
|
|
146
|
+
t.title ? (d(), n("div", H, g(t.title), 1)) : b("", !0)
|
|
147
|
+
])
|
|
148
|
+
]),
|
|
149
|
+
f("div", {
|
|
150
|
+
class: u(S(r))
|
|
151
|
+
}, [
|
|
152
|
+
y(x, { class: "w-5 h-5 transition-transform duration-200" })
|
|
153
|
+
], 2)
|
|
154
|
+
], 10, T),
|
|
155
|
+
y(L, {
|
|
156
|
+
"enter-active-class": "transition-all duration-300 ease-out",
|
|
157
|
+
"enter-from-class": "opacity-0 max-h-0",
|
|
158
|
+
"enter-to-class": "opacity-100 max-h-[600px]",
|
|
159
|
+
"leave-active-class": "transition-all duration-200 ease-in",
|
|
160
|
+
"leave-from-class": "opacity-100 max-h-[600px]",
|
|
161
|
+
"leave-to-class": "opacity-0 max-h-0"
|
|
162
|
+
}, {
|
|
163
|
+
default: O(() => [
|
|
164
|
+
s(r) ? (d(), n("div", {
|
|
165
|
+
key: 0,
|
|
166
|
+
id: `panel-${t.id || r}`,
|
|
167
|
+
class: u(I.value),
|
|
168
|
+
"aria-labelledby": `header-${t.id || r}`,
|
|
169
|
+
role: "region"
|
|
170
|
+
}, [
|
|
171
|
+
h(e.$slots, `content-${r}`, {
|
|
172
|
+
item: t,
|
|
173
|
+
index: r
|
|
174
|
+
}, () => [
|
|
175
|
+
h(e.$slots, "content", {
|
|
176
|
+
item: t,
|
|
177
|
+
index: r
|
|
178
|
+
}, () => [
|
|
179
|
+
t.content ? (d(), n("div", K, g(t.content), 1)) : b("", !0)
|
|
180
|
+
])
|
|
181
|
+
])
|
|
182
|
+
], 10, J)) : b("", !0)
|
|
183
|
+
]),
|
|
184
|
+
_: 2
|
|
185
|
+
}, 1024)
|
|
186
|
+
], 2))), 128))
|
|
187
|
+
], 2));
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
export {
|
|
191
|
+
U as default
|
|
192
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),n=require("class-variance-authority"),s=require("../utils/cn.cjs"),p=require("./Button.cjs"),h={__name:"AccordionItem",props:{variant:{type:String,default:"default",validator:a=>["default","bordered","filled","flush"].includes(a)},size:{type:String,default:"md",validator:a=>["sm","md","lg"].includes(a)}},setup(a){const l={render(){return e.h("svg",{fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor"},[e.h("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m19.5 8.25-7.5 7.5-7.5-7.5"})])}},r=a,t=e.ref(!1),i=()=>t.value=!t.value,c=n.cva("",{variants:{variant:{default:"",bordered:"border ui-border-strong rounded-lg overflow-hidden",filled:"ui-surface-strong border ui-border-strong rounded-lg overflow-hidden",flush:""}}}),u=n.cva("flex items-center justify-between w-full text-left transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-(--ui-primary) focus:ring-offset-2",{variants:{size:{sm:"p-3 text-sm",md:"p-4 text-base",lg:"p-6 text-lg"}}}),d=n.cva("overflow-hidden ui-text border-t ui-border-strong ",{variants:{size:{sm:"p-3 text-sm",md:"p-4 text-base",lg:"p-6 text-lg"}}}),m=e.computed(()=>s.cn(c({variant:r.variant}))),v=e.computed(()=>s.cn(u({size:r.size}))),f=e.computed(()=>s.cn(d({size:r.size})));return(o,g)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(m.value)},[e.createVNode(p.default,{class:e.normalizeClass(v.value),"aria-expanded":t.value,onClick:i},{default:e.withCtx(()=>[e.renderSlot(o.$slots,"header",{isOpen:t.value}),e.createVNode(l,{class:e.normalizeClass(e.unref(s.cn)("w-5 h-5 transition-transform ml-2",{"rotate-180":t.value}))},null,8,["class"])]),_:3},8,["class","aria-expanded"]),e.createVNode(e.Transition,{"enter-active-class":"transition-all duration-300 ease-out","enter-from-class":"opacity-0 max-h-0","enter-to-class":"opacity-100 max-h-96","leave-active-class":"transition-all duration-200 ease-in","leave-from-class":"opacity-100 max-h-96","leave-to-class":"opacity-0 max-h-0"},{default:e.withCtx(()=>[t.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(f.value)},[e.renderSlot(o.$slots,"content",{isOpen:t.value})],2)):e.createCommentVNode("",!0)]),_:3})],2))}};exports.default=h;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { ref as C, computed as o, createElementBlock as d, openBlock as c, normalizeClass as a, createVNode as n, withCtx as u, renderSlot as f, unref as k, Transition as z, createCommentVNode as _, h as m } from "vue";
|
|
2
|
+
import { cva as i } from "class-variance-authority";
|
|
3
|
+
import { cn as s } from "../utils/cn.js";
|
|
4
|
+
import V from "./Button.js";
|
|
5
|
+
const I = {
|
|
6
|
+
__name: "AccordionItem",
|
|
7
|
+
props: {
|
|
8
|
+
variant: {
|
|
9
|
+
type: String,
|
|
10
|
+
default: "default",
|
|
11
|
+
validator: (t) => ["default", "bordered", "filled", "flush"].includes(t)
|
|
12
|
+
},
|
|
13
|
+
size: {
|
|
14
|
+
type: String,
|
|
15
|
+
default: "md",
|
|
16
|
+
validator: (t) => ["sm", "md", "lg"].includes(t)
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
setup(t) {
|
|
20
|
+
const v = {
|
|
21
|
+
render() {
|
|
22
|
+
return m("svg", {
|
|
23
|
+
fill: "none",
|
|
24
|
+
viewBox: "0 0 24 24",
|
|
25
|
+
"stroke-width": "1.5",
|
|
26
|
+
stroke: "currentColor"
|
|
27
|
+
}, [
|
|
28
|
+
m("path", {
|
|
29
|
+
"stroke-linecap": "round",
|
|
30
|
+
"stroke-linejoin": "round",
|
|
31
|
+
d: "m19.5 8.25-7.5 7.5-7.5-7.5"
|
|
32
|
+
})
|
|
33
|
+
]);
|
|
34
|
+
}
|
|
35
|
+
}, r = t, e = C(!1), p = () => e.value = !e.value, g = i("", {
|
|
36
|
+
variants: {
|
|
37
|
+
variant: {
|
|
38
|
+
default: "",
|
|
39
|
+
bordered: "border ui-border-strong rounded-lg overflow-hidden",
|
|
40
|
+
filled: "ui-surface-strong border ui-border-strong rounded-lg overflow-hidden",
|
|
41
|
+
flush: ""
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}), h = i(
|
|
45
|
+
"flex items-center justify-between w-full text-left transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-(--ui-primary) focus:ring-offset-2",
|
|
46
|
+
{
|
|
47
|
+
variants: {
|
|
48
|
+
size: {
|
|
49
|
+
sm: "p-3 text-sm",
|
|
50
|
+
md: "p-4 text-base",
|
|
51
|
+
lg: "p-6 text-lg"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
), x = i("overflow-hidden ui-text border-t ui-border-strong ", {
|
|
56
|
+
variants: {
|
|
57
|
+
size: {
|
|
58
|
+
sm: "p-3 text-sm",
|
|
59
|
+
md: "p-4 text-base",
|
|
60
|
+
lg: "p-6 text-lg"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}), b = o(
|
|
64
|
+
() => s(g({ variant: r.variant }))
|
|
65
|
+
), w = o(
|
|
66
|
+
() => s(h({ size: r.size }))
|
|
67
|
+
), y = o(
|
|
68
|
+
() => s(x({ size: r.size }))
|
|
69
|
+
);
|
|
70
|
+
return (l, B) => (c(), d("div", {
|
|
71
|
+
class: a(b.value)
|
|
72
|
+
}, [
|
|
73
|
+
n(V, {
|
|
74
|
+
class: a(w.value),
|
|
75
|
+
"aria-expanded": e.value,
|
|
76
|
+
onClick: p
|
|
77
|
+
}, {
|
|
78
|
+
default: u(() => [
|
|
79
|
+
f(l.$slots, "header", { isOpen: e.value }),
|
|
80
|
+
n(v, {
|
|
81
|
+
class: a(k(s)("w-5 h-5 transition-transform ml-2", { "rotate-180": e.value }))
|
|
82
|
+
}, null, 8, ["class"])
|
|
83
|
+
]),
|
|
84
|
+
_: 3
|
|
85
|
+
}, 8, ["class", "aria-expanded"]),
|
|
86
|
+
n(z, {
|
|
87
|
+
"enter-active-class": "transition-all duration-300 ease-out",
|
|
88
|
+
"enter-from-class": "opacity-0 max-h-0",
|
|
89
|
+
"enter-to-class": "opacity-100 max-h-96",
|
|
90
|
+
"leave-active-class": "transition-all duration-200 ease-in",
|
|
91
|
+
"leave-from-class": "opacity-100 max-h-96",
|
|
92
|
+
"leave-to-class": "opacity-0 max-h-0"
|
|
93
|
+
}, {
|
|
94
|
+
default: u(() => [
|
|
95
|
+
e.value ? (c(), d("div", {
|
|
96
|
+
key: 0,
|
|
97
|
+
class: a(y.value)
|
|
98
|
+
}, [
|
|
99
|
+
f(l.$slots, "content", { isOpen: e.value })
|
|
100
|
+
], 2)) : _("", !0)
|
|
101
|
+
]),
|
|
102
|
+
_: 3
|
|
103
|
+
})
|
|
104
|
+
], 2));
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
export {
|
|
108
|
+
I as default
|
|
109
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),y=require("./Modal.cjs"),V=require("./MultiSelect.cjs"),x={class:"p-6 space-y-6"},b={class:"text-sm ui-text"},N={class:"font-medium"},E={class:"space-y-1.5"},g={class:"space-y-2"},k={class:"flex flex-wrap gap-2"},C=["onClick"],B={class:"space-y-2"},S={__name:"AddReminderModal",props:{modelValue:Boolean,availableRecipients:{type:Array,default:()=>[]},sendTypeOptions:{type:Array,default:()=>[]},modelName:{type:String,default:""}},emits:["update:modelValue","save"],setup(u,{emit:c}){const i=c,r=u,s=e.computed({get:()=>r.modelValue,set:o=>i("update:modelValue",o)}),a=e.ref(0),n=e.ref("Email"),d=e.ref([]),p=e.computed(()=>r.availableRecipients.map(o=>({value:o,label:o}))),m=()=>{a.value=0,n.value="Email",d.value=[]},v=()=>{i("save",{days:Number(a.value)||0,sendType:n.value,recipients:[...d.value]}),s.value=!1,m()},f=()=>{s.value=!1,m()};return(o,t)=>(e.openBlock(),e.createBlock(y.default,{modelValue:s.value,"onUpdate:modelValue":t[2]||(t[2]=l=>s.value=l),size:"xl"},{default:e.withCtx(()=>[e.createElementVNode("div",x,[e.createElementVNode("div",null,[t[4]||(t[4]=e.createElementVNode("h3",{class:"text-xl font-semibold ui-text"}," Add Reminder ",-1)),e.createElementVNode("p",b,[t[3]||(t[3]=e.createTextVNode(" Configure reminder rules for ",-1)),e.createElementVNode("span",N,e.toDisplayString(u.modelName),1)])]),e.createElementVNode("div",E,[t[5]||(t[5]=e.createElementVNode("label",{class:"text-sm font-medium ui-text"}," Days Before Due Date ",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":t[0]||(t[0]=l=>a.value=l),type:"number",min:"0",class:"w-full px-3 py-2.5 border rounded-md focus:ring-2 focus:ring-(--ui-primary) focus:outline-none ui-surface"},null,512),[[e.vModelText,a.value]])]),e.createElementVNode("div",g,[t[6]||(t[6]=e.createElementVNode("label",{class:"text-sm font-medium ui-text"}," Notification Channel ",-1)),e.createElementVNode("div",k,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.sendTypeOptions,l=>(e.openBlock(),e.createElementBlock("button",{key:l.value,type:"button",class:e.normalizeClass(["px-4 py-2 rounded-md text-sm font-medium transition",n.value===l.value?"ui-primary-bg ui-text shadow":" border ui-surface ui-text hover:brightness-105"]),onClick:T=>n.value=l.value},e.toDisplayString(l.label),11,C))),128))])]),e.createElementVNode("div",B,[t[7]||(t[7]=e.createElementVNode("label",{class:"text-sm font-medium ui-text"}," Recipients ",-1)),e.createVNode(V.default,{modelValue:d.value,"onUpdate:modelValue":t[1]||(t[1]=l=>d.value=l),options:p.value,placeholder:"Select recipients..."},null,8,["modelValue","options"])]),e.createElementVNode("div",{class:"flex justify-end gap-3 pt-4 border-t"},[e.createElementVNode("button",{type:"button",class:"px-4 py-2 rounded-md border ui-surface ui-text hover:brightness-105",onClick:f}," Cancel "),e.createElementVNode("button",{type:"button",class:"px-5 py-2 rounded-md ui-primary-bg ui-text hover:bg-(--ui-primary-strong) shadow",onClick:v}," Add Reminder ")])])]),_:1},8,["modelValue"]))}};exports.default=S;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { computed as v, ref as d, createBlock as C, openBlock as r, withCtx as k, createElementVNode as t, createTextVNode as N, toDisplayString as f, withDirectives as _, vModelText as w, createElementBlock as y, Fragment as R, renderList as T, normalizeClass as h, createVNode as A } from "vue";
|
|
2
|
+
import B from "./Modal.js";
|
|
3
|
+
import D from "./MultiSelect.js";
|
|
4
|
+
const E = { class: "p-6 space-y-6" }, O = { class: "text-sm ui-text" }, S = { class: "font-medium" }, U = { class: "space-y-1.5" }, $ = { class: "space-y-2" }, z = { class: "flex flex-wrap gap-2" }, M = ["onClick"], j = { class: "space-y-2" }, H = {
|
|
5
|
+
__name: "AddReminderModal",
|
|
6
|
+
props: {
|
|
7
|
+
modelValue: Boolean,
|
|
8
|
+
availableRecipients: {
|
|
9
|
+
type: Array,
|
|
10
|
+
default: () => []
|
|
11
|
+
},
|
|
12
|
+
sendTypeOptions: {
|
|
13
|
+
type: Array,
|
|
14
|
+
default: () => []
|
|
15
|
+
},
|
|
16
|
+
modelName: {
|
|
17
|
+
type: String,
|
|
18
|
+
default: ""
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
emits: ["update:modelValue", "save"],
|
|
22
|
+
setup(u, { emit: x }) {
|
|
23
|
+
const m = x, p = u, a = v({
|
|
24
|
+
get: () => p.modelValue,
|
|
25
|
+
set: (l) => m("update:modelValue", l)
|
|
26
|
+
}), o = d(0), i = d("Email"), n = d([]), b = v(
|
|
27
|
+
() => p.availableRecipients.map((l) => ({
|
|
28
|
+
value: l,
|
|
29
|
+
label: l
|
|
30
|
+
}))
|
|
31
|
+
), c = () => {
|
|
32
|
+
o.value = 0, i.value = "Email", n.value = [];
|
|
33
|
+
}, g = () => {
|
|
34
|
+
m("save", {
|
|
35
|
+
days: Number(o.value) || 0,
|
|
36
|
+
sendType: i.value,
|
|
37
|
+
recipients: [...n.value]
|
|
38
|
+
}), a.value = !1, c();
|
|
39
|
+
}, V = () => {
|
|
40
|
+
a.value = !1, c();
|
|
41
|
+
};
|
|
42
|
+
return (l, e) => (r(), C(B, {
|
|
43
|
+
modelValue: a.value,
|
|
44
|
+
"onUpdate:modelValue": e[2] || (e[2] = (s) => a.value = s),
|
|
45
|
+
size: "xl"
|
|
46
|
+
}, {
|
|
47
|
+
default: k(() => [
|
|
48
|
+
t("div", E, [
|
|
49
|
+
t("div", null, [
|
|
50
|
+
e[4] || (e[4] = t("h3", { class: "text-xl font-semibold ui-text" }, " Add Reminder ", -1)),
|
|
51
|
+
t("p", O, [
|
|
52
|
+
e[3] || (e[3] = N(" Configure reminder rules for ", -1)),
|
|
53
|
+
t("span", S, f(u.modelName), 1)
|
|
54
|
+
])
|
|
55
|
+
]),
|
|
56
|
+
t("div", U, [
|
|
57
|
+
e[5] || (e[5] = t("label", { class: "text-sm font-medium ui-text" }, " Days Before Due Date ", -1)),
|
|
58
|
+
_(t("input", {
|
|
59
|
+
"onUpdate:modelValue": e[0] || (e[0] = (s) => o.value = s),
|
|
60
|
+
type: "number",
|
|
61
|
+
min: "0",
|
|
62
|
+
class: "w-full px-3 py-2.5 border rounded-md focus:ring-2 focus:ring-(--ui-primary) focus:outline-none ui-surface"
|
|
63
|
+
}, null, 512), [
|
|
64
|
+
[w, o.value]
|
|
65
|
+
])
|
|
66
|
+
]),
|
|
67
|
+
t("div", $, [
|
|
68
|
+
e[6] || (e[6] = t("label", { class: "text-sm font-medium ui-text" }, " Notification Channel ", -1)),
|
|
69
|
+
t("div", z, [
|
|
70
|
+
(r(!0), y(R, null, T(u.sendTypeOptions, (s) => (r(), y("button", {
|
|
71
|
+
key: s.value,
|
|
72
|
+
type: "button",
|
|
73
|
+
class: h(["px-4 py-2 rounded-md text-sm font-medium transition", i.value === s.value ? "ui-primary-bg ui-text shadow" : " border ui-surface ui-text hover:brightness-105"]),
|
|
74
|
+
onClick: (F) => i.value = s.value
|
|
75
|
+
}, f(s.label), 11, M))), 128))
|
|
76
|
+
])
|
|
77
|
+
]),
|
|
78
|
+
t("div", j, [
|
|
79
|
+
e[7] || (e[7] = t("label", { class: "text-sm font-medium ui-text" }, " Recipients ", -1)),
|
|
80
|
+
A(D, {
|
|
81
|
+
modelValue: n.value,
|
|
82
|
+
"onUpdate:modelValue": e[1] || (e[1] = (s) => n.value = s),
|
|
83
|
+
options: b.value,
|
|
84
|
+
placeholder: "Select recipients..."
|
|
85
|
+
}, null, 8, ["modelValue", "options"])
|
|
86
|
+
]),
|
|
87
|
+
t("div", { class: "flex justify-end gap-3 pt-4 border-t" }, [
|
|
88
|
+
t("button", {
|
|
89
|
+
type: "button",
|
|
90
|
+
class: "px-4 py-2 rounded-md border ui-surface ui-text hover:brightness-105",
|
|
91
|
+
onClick: V
|
|
92
|
+
}, " Cancel "),
|
|
93
|
+
t("button", {
|
|
94
|
+
type: "button",
|
|
95
|
+
class: "px-5 py-2 rounded-md ui-primary-bg ui-text hover:bg-(--ui-primary-strong) shadow",
|
|
96
|
+
onClick: g
|
|
97
|
+
}, " Add Reminder ")
|
|
98
|
+
])
|
|
99
|
+
])
|
|
100
|
+
]),
|
|
101
|
+
_: 1
|
|
102
|
+
}, 8, ["modelValue"]));
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
export {
|
|
106
|
+
H as default
|
|
107
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),p=require("class-variance-authority"),C=require("../utils/cn.cjs"),y=require("./Button.cjs"),x={class:"flex items-start gap-3"},B={key:0,class:"shrink-0 mt-0.5"},b={class:"flex-1 min-w-0"},V={key:0,class:"font-medium text-sm mb-1"},N={key:1,class:"mt-3 flex gap-2"},z=["aria-label"],M=Object.assign({inheritAttrs:!1},{__name:"Alert",props:{variant:{type:String,default:"info",validator:t=>["info","success","warning","error","default","danger"].includes(t)},title:String,message:String,dismissible:{type:Boolean,default:!1},dismissLabel:{type:String,default:"Dismiss alert"},showIcon:{type:Boolean,default:!0},actions:{type:Array,default:()=>[]},autoClose:{type:[Boolean,Number],default:!1}},emits:["dismiss","action"],setup(t,{emit:u}){const o=t,s=u,a=e.ref(!0),i=()=>{a.value=!1,s("dismiss")},d=r=>{s("action",r),r.onClick&&r.onClick()};if(o.autoClose){const r=typeof o.autoClose=="number"?o.autoClose:5e3;setTimeout(i,r)}const l={render(){return e.h("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e.h("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01M21 12A9 9 0 1112 3a9 9 0 019 9z"})])}},m={render(){return e.h("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e.h("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2l4-4m5 2a9 9 0 11-18 0a9 9 0 0118 0z"})])}},g={render(){return e.h("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e.h("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 9v2m0 4h.01M10.29 3.86L1.82 18a1.5 1.5 0 001.29 2.25h18.78a1.5 1.5 0 001.29-2.25L13.71 3.86a1.5 1.5 0 00-2.42 0z"})])}},c={render(){return e.h("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e.h("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0a9 9 0 0118 0z"})])}},v={render(){return e.h("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e.h("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})])}},f=e.computed(()=>({info:l,success:m,warning:g,error:c,default:l,danger:c})[o.variant]),h=p.cva("relative w-full rounded-lg border p-4 flex items-start gap-3 ",{variants:{variant:{default:"ui-surface ui-text ",danger:"ui-danger-soft ui-danger",info:"ui-primary-soft ui-primary",success:"ui-success-soft ui-success",warning:"ui-warning-soft ui-warning",error:"ui-danger-soft ui-danger"}},defaultVariants:{variant:"default"}}),k=e.computed(()=>["w-5 h-5",{info:"ui-primary",success:"ui-success",warning:"ui-warning",error:"ui-danger",default:"ui-text",danger:"ui-danger"}[o.variant]]),w=e.computed(()=>["shrink-0 p-1 rounded-md transition-colors duration-200",{info:"ui-primary hover:text-(--ui-primary) hover:bg-(--ui-primary-soft)",success:"ui-success hover:text-(--ui-success) hover:bg-(--ui-success-soft)",warning:"ui-warning hover:text-(--ui-warning) hover:bg-(--ui-warning-soft)",error:"ui-danger hover:text-(--ui-danger) hover:bg-(--ui-danger-soft)",default:"ui-text hover:text-(--ui-text) hover:bg-(--ui-surface)",danger:"ui-danger hover:text-(--ui-danger) hover:bg-(--ui-danger-soft)"}[o.variant]]);return(r,S)=>(e.openBlock(),e.createBlock(e.Transition,{"enter-active-class":"transition-all duration-300","enter-from-class":"opacity-0 scale-95","enter-to-class":"opacity-100 scale-100","leave-active-class":"transition-all duration-200","leave-from-class":"opacity-100 scale-100","leave-to-class":"opacity-0 scale-95"},{default:e.withCtx(()=>[a.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(C.cn)(e.unref(h)({variant:t.variant}),r.$attrs.class)),role:"alert"},[e.createElementVNode("div",x,[t.showIcon?(e.openBlock(),e.createElementBlock("div",B,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(f.value),{class:e.normalizeClass(k.value)},null,8,["class"]))])):e.createCommentVNode("",!0),e.createElementVNode("div",b,[t.title?(e.openBlock(),e.createElementBlock("h4",V,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["text-sm",{"mt-0":!t.title,"mt-1":t.title}])},[e.renderSlot(r.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(t.message),1)])],2),r.$slots.actions||t.actions.length>0?(e.openBlock(),e.createElementBlock("div",N,[e.renderSlot(r.$slots,"actions",{},()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.actions,n=>(e.openBlock(),e.createBlock(y.default,{key:n.label,variant:n.variant||"outline",size:n.size||"sm",onClick:E=>d(n)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n.label),1)]),_:2},1032,["variant","size","onClick"]))),128))])])):e.createCommentVNode("",!0)]),t.dismissible?(e.openBlock(),e.createElementBlock("button",{key:1,class:e.normalizeClass(w.value),"aria-label":t.dismissLabel,onClick:i},[e.createVNode(v,{class:"w-4 h-4"})],10,z)):e.createCommentVNode("",!0)])],2)):e.createCommentVNode("",!0)]),_:3}))}});exports.default=M;
|