@gspa/ui 0.1.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -0
- package/dist/Button.vue_vue_type_script_setup_true_lang-B3TkBTvG.js +205 -0
- package/dist/Button.vue_vue_type_script_setup_true_lang-DZxttvYH.cjs +1 -0
- package/dist/DataTable.css +1 -0
- package/dist/DataTableToolBar.css +1 -0
- package/dist/FormField.vue_vue_type_script_setup_true_lang-DimMUyA-.js +205 -0
- package/dist/FormField.vue_vue_type_script_setup_true_lang-mEO-VA6R.cjs +1 -0
- package/dist/Header.css +1 -0
- package/dist/Input.vue_vue_type_script_setup_true_lang-C1OQn24h.cjs +1 -0
- package/dist/Input.vue_vue_type_script_setup_true_lang-CpBoY97r.js +137 -0
- package/dist/Loader.css +1 -0
- package/dist/ReminderConfig.css +1 -0
- package/dist/ReusableForm.css +1 -0
- package/dist/Sidebar.css +1 -0
- package/dist/Toast.css +1 -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 +227 -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 +4 -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 +4 -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 +58 -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 +4 -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 +686 -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 +73 -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/gspa-ui.css +1 -1
- package/dist/index.cjs +1 -0
- package/dist/index.esm.js +315 -19546
- package/dist/layouts/AuthLayout.cjs +1 -0
- package/dist/layouts/AuthLayout.js +188 -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/form-field.cjs +1 -0
- package/dist/lib/form-field.js +4 -0
- package/dist/lib/icon.cjs +1 -0
- package/dist/lib/icon.js +4 -0
- package/dist/lib/theme.cjs +1 -0
- package/dist/lib/theme.js +145 -0
- package/dist/lib/toast.cjs +1 -0
- package/dist/lib/toast.js +81 -0
- package/dist/src/components/Alert.vue.d.ts.map +1 -1
- package/dist/src/components/Button.vue.d.ts +127 -29
- package/dist/src/components/Button.vue.d.ts.map +1 -1
- package/dist/src/components/Checkbox.vue.d.ts +2 -2
- package/dist/src/components/DataTable.vue.d.ts +1 -1
- package/dist/src/components/FormField.vue.d.ts +106 -38
- package/dist/src/components/FormField.vue.d.ts.map +1 -1
- package/dist/src/components/Icon.vue.d.ts.map +1 -1
- package/dist/src/components/Input.vue.d.ts +137 -33
- package/dist/src/components/Input.vue.d.ts.map +1 -1
- package/dist/src/components/ReusableForm.vue.d.ts +1 -1
- package/dist/src/components/ReusableForm.vue.d.ts.map +1 -1
- package/dist/src/components/ReusableFormModal.vue.d.ts +1 -1
- package/dist/src/components/Textarea.vue.d.ts +2 -2
- package/dist/src/index.d.ts +9 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/layouts/AuthLayout.vue.d.ts +2 -0
- package/dist/src/layouts/AuthLayout.vue.d.ts.map +1 -1
- package/dist/src/lib/form-field.d.ts +2 -0
- package/dist/src/lib/form-field.d.ts.map +1 -0
- package/dist/src/lib/icon.d.ts +2 -0
- package/dist/src/lib/icon.d.ts.map +1 -0
- package/dist/src/lib/theme.d.ts +4 -0
- package/dist/src/lib/theme.d.ts.map +1 -1
- package/dist/src/types.d.ts +44 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/styles/auth-layout.css +1 -0
- package/dist/styles/button.css +1 -0
- package/dist/styles/form-field.css +1 -0
- package/dist/styles/input.css +1 -0
- package/dist/styles/tokens.css +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/cn.cjs +1 -0
- package/dist/utils/cn.js +7 -0
- package/package.json +45 -8
- package/dist/index.js +0 -605
- package/dist/src/__tests__/Alert.spec.d.ts +0 -2
- package/dist/src/__tests__/Alert.spec.d.ts.map +0 -1
- package/dist/src/__tests__/App.spec.d.ts +0 -2
- package/dist/src/__tests__/App.spec.d.ts.map +0 -1
- package/dist/src/__tests__/AuthLayout.spec.d.ts +0 -2
- package/dist/src/__tests__/AuthLayout.spec.d.ts.map +0 -1
- package/dist/src/__tests__/Badge.spec.d.ts +0 -2
- package/dist/src/__tests__/Badge.spec.d.ts.map +0 -1
- package/dist/src/__tests__/Button.spec.d.ts +0 -2
- package/dist/src/__tests__/Button.spec.d.ts.map +0 -1
- package/dist/src/__tests__/Card.spec.d.ts +0 -2
- package/dist/src/__tests__/Card.spec.d.ts.map +0 -1
- package/dist/src/__tests__/Checkbox.spec.d.ts +0 -2
- package/dist/src/__tests__/Checkbox.spec.d.ts.map +0 -1
- package/dist/src/__tests__/Dropdown.spec.d.ts +0 -2
- package/dist/src/__tests__/Dropdown.spec.d.ts.map +0 -1
- package/dist/src/__tests__/Input.spec.d.ts +0 -2
- package/dist/src/__tests__/Input.spec.d.ts.map +0 -1
- package/dist/src/__tests__/Modal.spec.d.ts +0 -2
- package/dist/src/__tests__/Modal.spec.d.ts.map +0 -1
- package/dist/src/__tests__/Radio.spec.d.ts +0 -2
- package/dist/src/__tests__/Radio.spec.d.ts.map +0 -1
- package/dist/src/__tests__/ReusableForm.spec.d.ts +0 -2
- package/dist/src/__tests__/ReusableForm.spec.d.ts.map +0 -1
- package/dist/src/__tests__/Tabs.spec.d.ts +0 -2
- package/dist/src/__tests__/Tabs.spec.d.ts.map +0 -1
- package/dist/src/__tests__/integration/CardIntegration.spec.d.ts +0 -2
- package/dist/src/__tests__/integration/CardIntegration.spec.d.ts.map +0 -1
- package/dist/src/__tests__/integration/FormIntegration.spec.d.ts +0 -2
- package/dist/src/__tests__/integration/FormIntegration.spec.d.ts.map +0 -1
- package/dist/src/__tests__/integration/ModalIntegration.spec.d.ts +0 -2
- package/dist/src/__tests__/integration/ModalIntegration.spec.d.ts.map +0 -1
- package/dist/src/__tests__/integration/NavigationIntegration.spec.d.ts +0 -2
- package/dist/src/__tests__/integration/NavigationIntegration.spec.d.ts.map +0 -1
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { computed as d, createElementBlock as N, openBlock as f, createElementVNode as l, normalizeStyle as p, toDisplayString as r } from "vue";
|
|
2
|
+
const x = { class: "w-full" }, b = ["min", "max", "step", "value"], y = { class: "flex justify-between text-xs ui-text mt-1" }, h = {
|
|
3
|
+
__name: "Slider",
|
|
4
|
+
props: {
|
|
5
|
+
modelValue: { type: [Number, String], default: 0 },
|
|
6
|
+
min: { type: Number, default: 0 },
|
|
7
|
+
max: { type: Number, default: 100 },
|
|
8
|
+
step: { type: Number, default: 1 }
|
|
9
|
+
},
|
|
10
|
+
emits: ["update:modelValue"],
|
|
11
|
+
setup(e, { emit: i }) {
|
|
12
|
+
const m = e, s = i, o = d(() => {
|
|
13
|
+
const a = Number(m.modelValue), t = Number(m.min), u = Number(m.max);
|
|
14
|
+
if (Number.isNaN(a) || Number.isNaN(t) || Number.isNaN(u) || u <= t)
|
|
15
|
+
return "var(--ui-primary)";
|
|
16
|
+
const n = (Math.min(Math.max(a, t), u) - t) / (u - t);
|
|
17
|
+
return n <= 0.2 ? "#16a34a" : n <= 0.4 ? "#65a30d" : n <= 0.6 ? "#eab308" : n <= 0.8 ? "#f97316" : "#dc2626";
|
|
18
|
+
}), c = (a) => {
|
|
19
|
+
s("update:modelValue", Number(a.target.value));
|
|
20
|
+
};
|
|
21
|
+
return (a, t) => (f(), N("div", x, [
|
|
22
|
+
l("input", {
|
|
23
|
+
type: "range",
|
|
24
|
+
min: e.min,
|
|
25
|
+
max: e.max,
|
|
26
|
+
step: e.step,
|
|
27
|
+
value: e.modelValue,
|
|
28
|
+
class: "w-full cursor-pointer",
|
|
29
|
+
style: p({ accentColor: o.value }),
|
|
30
|
+
onInput: c
|
|
31
|
+
}, null, 44, b),
|
|
32
|
+
l("div", y, [
|
|
33
|
+
l("span", null, r(e.min), 1),
|
|
34
|
+
l("span", null, r(e.modelValue), 1),
|
|
35
|
+
l("span", null, r(e.max), 1)
|
|
36
|
+
])
|
|
37
|
+
]));
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
export {
|
|
41
|
+
h as default
|
|
42
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),l=require("class-variance-authority"),c=require("../utils/cn.cjs"),u=["aria-label"],d={key:0,class:"sr-only"},m={__name:"Spinner",props:{size:{type:String,default:"md",validator:t=>["xs","sm","md","lg","xl"].includes(t)},variant:{type:String,default:"default",validator:t=>["default","primary","secondary"].includes(t)},label:{type:String,default:"Loading..."},class:String},setup(t){const a=t,n=l.cva("inline-flex items-center justify-center",{variants:{variant:{default:"text-muted-foreground",primary:"ui-primary",secondary:"text-secondary-foreground"}}}),r=l.cva("animate-spin",{variants:{size:{xs:"h-3 w-3",sm:"h-4 w-4",md:"h-6 w-6",lg:"h-8 w-8",xl:"h-12 w-12"}}}),i=e.computed(()=>c.cn(n({variant:a.variant}),a.class)),o=e.computed(()=>r({size:a.size}));return(p,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(i.value),role:"status","aria-label":t.label},[(e.openBlock(),e.createElementBlock("svg",{class:e.normalizeClass(o.value),xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},[...s[0]||(s[0]=[e.createElementVNode("circle",{class:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"4"},null,-1),e.createElementVNode("path",{class:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"},null,-1)])],2)),t.label?(e.openBlock(),e.createElementBlock("span",d,e.toDisplayString(t.label),1)):e.createCommentVNode("",!0)],10,u))}};exports.default=m;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { computed as l, createElementBlock as a, openBlock as s, normalizeClass as n, createCommentVNode as p, createElementVNode as i, toDisplayString as f } from "vue";
|
|
2
|
+
import { cva as o } from "class-variance-authority";
|
|
3
|
+
import { cn as v } from "../utils/cn.js";
|
|
4
|
+
const y = ["aria-label"], g = {
|
|
5
|
+
key: 0,
|
|
6
|
+
class: "sr-only"
|
|
7
|
+
}, C = {
|
|
8
|
+
__name: "Spinner",
|
|
9
|
+
props: {
|
|
10
|
+
size: {
|
|
11
|
+
type: String,
|
|
12
|
+
default: "md",
|
|
13
|
+
validator: (e) => ["xs", "sm", "md", "lg", "xl"].includes(e)
|
|
14
|
+
},
|
|
15
|
+
variant: {
|
|
16
|
+
type: String,
|
|
17
|
+
default: "default",
|
|
18
|
+
validator: (e) => ["default", "primary", "secondary"].includes(e)
|
|
19
|
+
},
|
|
20
|
+
label: {
|
|
21
|
+
type: String,
|
|
22
|
+
default: "Loading..."
|
|
23
|
+
},
|
|
24
|
+
class: String
|
|
25
|
+
},
|
|
26
|
+
setup(e) {
|
|
27
|
+
const t = e, c = o(
|
|
28
|
+
"inline-flex items-center justify-center",
|
|
29
|
+
{
|
|
30
|
+
variants: {
|
|
31
|
+
variant: {
|
|
32
|
+
default: "text-muted-foreground",
|
|
33
|
+
primary: "ui-primary",
|
|
34
|
+
secondary: "text-secondary-foreground"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
), d = o(
|
|
39
|
+
"animate-spin",
|
|
40
|
+
{
|
|
41
|
+
variants: {
|
|
42
|
+
size: {
|
|
43
|
+
xs: "h-3 w-3",
|
|
44
|
+
sm: "h-4 w-4",
|
|
45
|
+
md: "h-6 w-6",
|
|
46
|
+
lg: "h-8 w-8",
|
|
47
|
+
xl: "h-12 w-12"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
), m = l(
|
|
52
|
+
() => v(c({ variant: t.variant }), t.class)
|
|
53
|
+
), u = l(
|
|
54
|
+
() => d({ size: t.size })
|
|
55
|
+
);
|
|
56
|
+
return (x, r) => (s(), a("div", {
|
|
57
|
+
class: n(m.value),
|
|
58
|
+
role: "status",
|
|
59
|
+
"aria-label": e.label
|
|
60
|
+
}, [
|
|
61
|
+
(s(), a("svg", {
|
|
62
|
+
class: n(u.value),
|
|
63
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
64
|
+
fill: "none",
|
|
65
|
+
viewBox: "0 0 24 24"
|
|
66
|
+
}, [...r[0] || (r[0] = [
|
|
67
|
+
i("circle", {
|
|
68
|
+
class: "opacity-25",
|
|
69
|
+
cx: "12",
|
|
70
|
+
cy: "12",
|
|
71
|
+
r: "10",
|
|
72
|
+
stroke: "currentColor",
|
|
73
|
+
"stroke-width": "4"
|
|
74
|
+
}, null, -1),
|
|
75
|
+
i("path", {
|
|
76
|
+
class: "opacity-75",
|
|
77
|
+
fill: "currentColor",
|
|
78
|
+
d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
|
|
79
|
+
}, null, -1)
|
|
80
|
+
])], 2)),
|
|
81
|
+
e.label ? (s(), a("span", g, f(e.label), 1)) : p("", !0)
|
|
82
|
+
], 10, y));
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
export {
|
|
86
|
+
C as default
|
|
87
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),r={class:"flex items-center space-x-4 ui-text"},s={__name:"Stepper",setup(o){return(t,c)=>(e.openBlock(),e.createElementBlock("div",r,[e.renderSlot(t.$slots,"default")]))}};exports.default=s;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createElementBlock as t, openBlock as r, renderSlot as s } from "vue";
|
|
2
|
+
const o = { class: "flex items-center space-x-4 ui-text" }, l = {
|
|
3
|
+
__name: "Stepper",
|
|
4
|
+
setup(c) {
|
|
5
|
+
return (e, n) => (r(), t("div", o, [
|
|
6
|
+
s(e.$slots, "default")
|
|
7
|
+
]));
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
export {
|
|
11
|
+
l as default
|
|
12
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),i={class:"flex items-center"},r={class:"ml-2"},s={class:"font-medium"},l={key:0,class:"text-sm ui-text"},o={__name:"StepperItem",props:{step:{type:Number,required:!0},title:{type:String,required:!0},description:{type:String,default:""},active:{type:Boolean,default:!1},completed:{type:Boolean,default:!1}},setup(t){return(c,n)=>(e.openBlock(),e.createElementBlock("div",i,[e.createElementVNode("div",{class:e.normalizeClass(["flex items-center justify-center w-8 h-8 rounded-full border-2",t.active?"ui-primary-bg border-(--ui-primary) ui-text":t.completed?"ui-success-bg border-(--ui-success) ui-text":"ui-border-strong ui-text"])},[e.createElementVNode("span",null,e.toDisplayString(t.step),1)],2),e.createElementVNode("div",r,[e.createElementVNode("div",s,e.toDisplayString(t.title),1),t.description?(e.openBlock(),e.createElementBlock("div",l,e.toDisplayString(t.description),1)):e.createCommentVNode("",!0)])]))}};exports.default=o;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { createElementBlock as s, openBlock as r, createElementVNode as t, normalizeClass as c, toDisplayString as i, createCommentVNode as o } from "vue";
|
|
2
|
+
const l = { class: "flex items-center" }, n = { class: "ml-2" }, d = { class: "font-medium" }, u = {
|
|
3
|
+
key: 0,
|
|
4
|
+
class: "text-sm ui-text"
|
|
5
|
+
}, f = {
|
|
6
|
+
__name: "StepperItem",
|
|
7
|
+
props: {
|
|
8
|
+
step: { type: Number, required: !0 },
|
|
9
|
+
title: { type: String, required: !0 },
|
|
10
|
+
description: { type: String, default: "" },
|
|
11
|
+
active: { type: Boolean, default: !1 },
|
|
12
|
+
completed: { type: Boolean, default: !1 }
|
|
13
|
+
},
|
|
14
|
+
setup(e) {
|
|
15
|
+
return (a, m) => (r(), s("div", l, [
|
|
16
|
+
t("div", {
|
|
17
|
+
class: c([
|
|
18
|
+
"flex items-center justify-center w-8 h-8 rounded-full border-2",
|
|
19
|
+
e.active ? "ui-primary-bg border-(--ui-primary) ui-text" : e.completed ? "ui-success-bg border-(--ui-success) ui-text" : "ui-border-strong ui-text"
|
|
20
|
+
])
|
|
21
|
+
}, [
|
|
22
|
+
t("span", null, i(e.step), 1)
|
|
23
|
+
], 2),
|
|
24
|
+
t("div", n, [
|
|
25
|
+
t("div", d, i(e.title), 1),
|
|
26
|
+
e.description ? (r(), s("div", u, i(e.description), 1)) : o("", !0)
|
|
27
|
+
])
|
|
28
|
+
]));
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
export {
|
|
32
|
+
f as default
|
|
33
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("vue"),t=require("class-variance-authority"),u=require("../utils/cn.cjs"),m=["aria-checked","disabled"],h={__name:"Switch",props:{modelValue:Boolean,disabled:Boolean,size:{type:String,default:"md",validator:a=>["sm","md","lg"].includes(a)},class:String},emits:["update:modelValue"],setup(a,{emit:l}){const e=a,i=l,c=t.cva("inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--ui-ring) focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",{variants:{size:{sm:"h-5 w-9",md:"h-6 w-11",lg:"h-7 w-12"},checked:{true:"ui-danger-bg border-(--ui-danger)",false:"ui-surface-soft border-(--ui-border-strong)"}}}),r=t.cva("pointer-events-none block rounded-full ui-surface border ui-border-strong shadow-sm ring-0 transition-transform",{variants:{size:{sm:"h-4 w-4",md:"h-5 w-5",lg:"h-6 w-6"},checked:{true:"",false:""}},compoundVariants:[{size:"sm",checked:!0,class:"translate-x-4"},{size:"sm",checked:!1,class:"translate-x-0"},{size:"md",checked:!0,class:"translate-x-5"},{size:"md",checked:!1,class:"translate-x-0"},{size:"lg",checked:!0,class:"translate-x-5"},{size:"lg",checked:!1,class:"translate-x-0"}]}),o=s.computed(()=>u.cn(c({size:e.size,checked:e.modelValue}),e.class)),n=s.computed(()=>r({size:e.size,checked:e.modelValue})),d=()=>{e.disabled||i("update:modelValue",!e.modelValue)};return(b,f)=>(s.openBlock(),s.createElementBlock("button",{type:"button",role:"switch","aria-checked":a.modelValue,disabled:a.disabled,class:s.normalizeClass(o.value),onClick:d},[s.createElementVNode("span",{class:s.normalizeClass(n.value)},null,2)],10,m))}};exports.default=h;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { computed as a, createElementBlock as m, openBlock as h, normalizeClass as t, createElementVNode as f } from "vue";
|
|
2
|
+
import { cva as l } from "class-variance-authority";
|
|
3
|
+
import { cn as b } from "../utils/cn.js";
|
|
4
|
+
const g = ["aria-checked", "disabled"], V = {
|
|
5
|
+
__name: "Switch",
|
|
6
|
+
props: {
|
|
7
|
+
modelValue: Boolean,
|
|
8
|
+
disabled: Boolean,
|
|
9
|
+
size: {
|
|
10
|
+
type: String,
|
|
11
|
+
default: "md",
|
|
12
|
+
validator: (s) => ["sm", "md", "lg"].includes(s)
|
|
13
|
+
},
|
|
14
|
+
class: String
|
|
15
|
+
},
|
|
16
|
+
emits: ["update:modelValue"],
|
|
17
|
+
setup(s, { emit: i }) {
|
|
18
|
+
const e = s, o = i, r = l(
|
|
19
|
+
"inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--ui-ring) focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
|
|
20
|
+
{
|
|
21
|
+
variants: {
|
|
22
|
+
size: {
|
|
23
|
+
sm: "h-5 w-9",
|
|
24
|
+
md: "h-6 w-11",
|
|
25
|
+
lg: "h-7 w-12"
|
|
26
|
+
},
|
|
27
|
+
checked: {
|
|
28
|
+
true: "ui-danger-bg border-(--ui-danger)",
|
|
29
|
+
false: "ui-surface-soft border-(--ui-border-strong)"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
), c = l(
|
|
34
|
+
"pointer-events-none block rounded-full ui-surface border ui-border-strong shadow-sm ring-0 transition-transform",
|
|
35
|
+
{
|
|
36
|
+
variants: {
|
|
37
|
+
size: {
|
|
38
|
+
sm: "h-4 w-4",
|
|
39
|
+
md: "h-5 w-5",
|
|
40
|
+
lg: "h-6 w-6"
|
|
41
|
+
},
|
|
42
|
+
checked: {
|
|
43
|
+
true: "",
|
|
44
|
+
false: ""
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
compoundVariants: [
|
|
48
|
+
{
|
|
49
|
+
size: "sm",
|
|
50
|
+
checked: !0,
|
|
51
|
+
class: "translate-x-4"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
size: "sm",
|
|
55
|
+
checked: !1,
|
|
56
|
+
class: "translate-x-0"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
size: "md",
|
|
60
|
+
checked: !0,
|
|
61
|
+
class: "translate-x-5"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
size: "md",
|
|
65
|
+
checked: !1,
|
|
66
|
+
class: "translate-x-0"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
size: "lg",
|
|
70
|
+
checked: !0,
|
|
71
|
+
class: "translate-x-5"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
size: "lg",
|
|
75
|
+
checked: !1,
|
|
76
|
+
class: "translate-x-0"
|
|
77
|
+
}
|
|
78
|
+
]
|
|
79
|
+
}
|
|
80
|
+
), n = a(
|
|
81
|
+
() => b(
|
|
82
|
+
r({
|
|
83
|
+
size: e.size,
|
|
84
|
+
checked: e.modelValue
|
|
85
|
+
}),
|
|
86
|
+
e.class
|
|
87
|
+
)
|
|
88
|
+
), d = a(
|
|
89
|
+
() => c({
|
|
90
|
+
size: e.size,
|
|
91
|
+
checked: e.modelValue
|
|
92
|
+
})
|
|
93
|
+
), u = () => {
|
|
94
|
+
e.disabled || o("update:modelValue", !e.modelValue);
|
|
95
|
+
};
|
|
96
|
+
return (k, p) => (h(), m("button", {
|
|
97
|
+
type: "button",
|
|
98
|
+
role: "switch",
|
|
99
|
+
"aria-checked": s.modelValue,
|
|
100
|
+
disabled: s.disabled,
|
|
101
|
+
class: t(n.value),
|
|
102
|
+
onClick: u
|
|
103
|
+
}, [
|
|
104
|
+
f("span", {
|
|
105
|
+
class: t(d.value)
|
|
106
|
+
}, null, 2)
|
|
107
|
+
], 10, g));
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
export {
|
|
111
|
+
V as default
|
|
112
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("vue"),w=require("class-variance-authority"),x=require("../utils/cn.cjs"),_={class:"w-full"},k={class:"relative inline-flex w-full gap-2 rounded-xl border ui-border-strong ui-surface-muted p-1.5",role:"tablist"},V=["id","disabled","aria-selected","aria-controls","onKeydown","onClick"],z={class:"mt-4"},E={__name:"Tab",props:{defaultIndex:{type:Number,default:0},modelValue:{type:Number,default:null},size:{type:String,default:"sm"},variant:{type:String,default:"default"},loading:{type:Boolean,default:!1}},emits:["tab-change","update:modelValue"],setup(m,{emit:b}){const o=m,g=w.cva("relative z-10 rounded-lg font-medium transition-all duration-200 border border-transparent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--ui-primary)",{variants:{size:{sm:"px-2.5 py-1 text-[11px]",md:"px-3 py-1.5 text-xs",lg:"px-3.5 py-2 text-sm"},variant:{default:""}},defaultVariants:{size:"md",variant:"default"}}),l=t.ref(o.modelValue??o.defaultIndex),n=t.ref([]),c=t.ref([]),v=t.ref({width:"0px",transform:"translateX(0px)"}),i=e=>{e<0||e>=n.value.length||(l.value=e,d("update:modelValue",e),d("tab-change",e),s())};t.watch(()=>o.modelValue,e=>{typeof e=="number"&&e!==l.value&&(l.value=e,s())});const d=b,y=(e,r)=>{c.value[r]=e||null},f=e=>{const r=c.value[e];r&&typeof r.focus=="function"&&r.focus()},h=(e,r)=>{if(o.loading)return;const u=n.value.length-1;if(!(u<0)){if(e.key==="ArrowRight"){e.preventDefault();const a=r>=u?0:r+1;i(a),f(a);return}if(e.key==="ArrowLeft"){e.preventDefault();const a=r<=0?u:r-1;i(a),f(a);return}if(e.key==="Home"){e.preventDefault(),i(0),f(0);return}e.key==="End"&&(e.preventDefault(),i(u),f(u))}},s=()=>{t.nextTick(()=>{const e=c.value[l.value];if(!e){v.value={width:"0px",transform:"translateX(0px)"};return}v.value={width:`${e.offsetWidth}px`,transform:`translateX(${e.offsetLeft}px)`}})};return t.watch(()=>n.value.length,()=>{s()}),t.watch(l,()=>{s()}),t.onMounted(()=>{s(),window.addEventListener("resize",s)}),t.onUnmounted(()=>{window.removeEventListener("resize",s)}),t.provide("tabsContext",{activeIndex:l,tabs:n,registerTab:e=>{n.value.push({label:e});const r=n.value.length-1;return s(),r},unregisterTab:e=>{n.value.splice(e,1),c.value.splice(e,1),l.value>=n.value.length&&(l.value=Math.max(n.value.length-1,0),d("update:modelValue",l.value),d("tab-change",l.value)),s()}}),(e,r)=>(t.openBlock(),t.createElementBlock("div",_,[t.createElementVNode("div",k,[t.createElementVNode("span",{class:"pointer-events-none absolute top-1.5 bottom-1.5 rounded-lg bg-(--ui-primary) opacity-10 transition-all duration-250 ease-out z-0",style:t.normalizeStyle(v.value)},null,4),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(n.value,(u,a)=>(t.openBlock(),t.createElementBlock("button",{id:`tab-${a}`,key:a,ref_for:!0,ref:p=>y(p,a),disabled:o.loading,class:t.normalizeClass(t.unref(x.cn)(t.unref(g)({size:o.size,variant:o.variant}),l.value===a?"bg-(--ui-primary) text-(--ui-text-inverse) shadow-sm":"border-transparent ui-text-muted hover:ui-text hover:bg-(--ui-surface)",o.loading&&"cursor-not-allowed opacity-50")),"aria-selected":l.value===a,"aria-controls":`panel-${a}`,role:"tab",tabindex:"0",onKeydown:p=>h(p,a),onClick:p=>!o.loading&&i(a)},t.toDisplayString(u.label),43,V))),128))]),t.createElementVNode("div",z,[t.renderSlot(e.$slots,"default")])]))}};exports.default=E;
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { ref as p, watch as m, nextTick as V, onMounted as T, onUnmounted as I, provide as E, createElementBlock as b, openBlock as g, createElementVNode as y, normalizeStyle as S, Fragment as $, renderList as D, normalizeClass as L, unref as h, toDisplayString as C, renderSlot as B } from "vue";
|
|
2
|
+
import { cva as K } from "class-variance-authority";
|
|
3
|
+
import { cn as N } from "../utils/cn.js";
|
|
4
|
+
const R = { class: "w-full" }, X = {
|
|
5
|
+
class: "relative inline-flex w-full gap-2 rounded-xl border ui-border-strong ui-surface-muted p-1.5",
|
|
6
|
+
role: "tablist"
|
|
7
|
+
}, A = ["id", "disabled", "aria-selected", "aria-controls", "onKeydown", "onClick"], M = { class: "mt-4" }, W = {
|
|
8
|
+
__name: "Tab",
|
|
9
|
+
props: {
|
|
10
|
+
defaultIndex: { type: Number, default: 0 },
|
|
11
|
+
modelValue: { type: Number, default: null },
|
|
12
|
+
size: { type: String, default: "sm" },
|
|
13
|
+
variant: { type: String, default: "default" },
|
|
14
|
+
loading: { type: Boolean, default: !1 }
|
|
15
|
+
},
|
|
16
|
+
emits: ["tab-change", "update:modelValue"],
|
|
17
|
+
setup(x, { emit: w }) {
|
|
18
|
+
const n = x, _ = K(
|
|
19
|
+
"relative z-10 rounded-lg font-medium transition-all duration-200 border border-transparent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--ui-primary)",
|
|
20
|
+
{
|
|
21
|
+
variants: {
|
|
22
|
+
size: {
|
|
23
|
+
sm: "px-2.5 py-1 text-[11px]",
|
|
24
|
+
md: "px-3 py-1.5 text-xs",
|
|
25
|
+
lg: "px-3.5 py-2 text-sm"
|
|
26
|
+
},
|
|
27
|
+
variant: {
|
|
28
|
+
default: ""
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
defaultVariants: {
|
|
32
|
+
size: "md",
|
|
33
|
+
variant: "default"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
), r = p(n.modelValue ?? n.defaultIndex), l = p([]), i = p([]), v = p({ width: "0px", transform: "translateX(0px)" }), u = (e) => {
|
|
37
|
+
e < 0 || e >= l.value.length || (r.value = e, d("update:modelValue", e), d("tab-change", e), o());
|
|
38
|
+
};
|
|
39
|
+
m(() => n.modelValue, (e) => {
|
|
40
|
+
typeof e == "number" && e !== r.value && (r.value = e, o());
|
|
41
|
+
});
|
|
42
|
+
const d = w, z = (e, a) => {
|
|
43
|
+
i.value[a] = e || null;
|
|
44
|
+
}, c = (e) => {
|
|
45
|
+
const a = i.value[e];
|
|
46
|
+
a && typeof a.focus == "function" && a.focus();
|
|
47
|
+
}, k = (e, a) => {
|
|
48
|
+
if (n.loading) return;
|
|
49
|
+
const s = l.value.length - 1;
|
|
50
|
+
if (!(s < 0)) {
|
|
51
|
+
if (e.key === "ArrowRight") {
|
|
52
|
+
e.preventDefault();
|
|
53
|
+
const t = a >= s ? 0 : a + 1;
|
|
54
|
+
u(t), c(t);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
if (e.key === "ArrowLeft") {
|
|
58
|
+
e.preventDefault();
|
|
59
|
+
const t = a <= 0 ? s : a - 1;
|
|
60
|
+
u(t), c(t);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
if (e.key === "Home") {
|
|
64
|
+
e.preventDefault(), u(0), c(0);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
e.key === "End" && (e.preventDefault(), u(s), c(s));
|
|
68
|
+
}
|
|
69
|
+
}, o = () => {
|
|
70
|
+
V(() => {
|
|
71
|
+
const e = i.value[r.value];
|
|
72
|
+
if (!e) {
|
|
73
|
+
v.value = { width: "0px", transform: "translateX(0px)" };
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
v.value = {
|
|
77
|
+
width: `${e.offsetWidth}px`,
|
|
78
|
+
transform: `translateX(${e.offsetLeft}px)`
|
|
79
|
+
};
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
return m(() => l.value.length, () => {
|
|
83
|
+
o();
|
|
84
|
+
}), m(r, () => {
|
|
85
|
+
o();
|
|
86
|
+
}), T(() => {
|
|
87
|
+
o(), window.addEventListener("resize", o);
|
|
88
|
+
}), I(() => {
|
|
89
|
+
window.removeEventListener("resize", o);
|
|
90
|
+
}), E("tabsContext", {
|
|
91
|
+
activeIndex: r,
|
|
92
|
+
tabs: l,
|
|
93
|
+
registerTab: (e) => {
|
|
94
|
+
l.value.push({ label: e });
|
|
95
|
+
const a = l.value.length - 1;
|
|
96
|
+
return o(), a;
|
|
97
|
+
},
|
|
98
|
+
unregisterTab: (e) => {
|
|
99
|
+
l.value.splice(e, 1), i.value.splice(e, 1), r.value >= l.value.length && (r.value = Math.max(l.value.length - 1, 0), d("update:modelValue", r.value), d("tab-change", r.value)), o();
|
|
100
|
+
}
|
|
101
|
+
}), (e, a) => (g(), b("div", R, [
|
|
102
|
+
y("div", X, [
|
|
103
|
+
y("span", {
|
|
104
|
+
class: "pointer-events-none absolute top-1.5 bottom-1.5 rounded-lg bg-(--ui-primary) opacity-10 transition-all duration-250 ease-out z-0",
|
|
105
|
+
style: S(v.value)
|
|
106
|
+
}, null, 4),
|
|
107
|
+
(g(!0), b($, null, D(l.value, (s, t) => (g(), b("button", {
|
|
108
|
+
id: `tab-${t}`,
|
|
109
|
+
key: t,
|
|
110
|
+
ref_for: !0,
|
|
111
|
+
ref: (f) => z(f, t),
|
|
112
|
+
disabled: n.loading,
|
|
113
|
+
class: L(h(N)(
|
|
114
|
+
h(_)({ size: n.size, variant: n.variant }),
|
|
115
|
+
r.value === t ? "bg-(--ui-primary) text-(--ui-text-inverse) shadow-sm" : "border-transparent ui-text-muted hover:ui-text hover:bg-(--ui-surface)",
|
|
116
|
+
n.loading && "cursor-not-allowed opacity-50"
|
|
117
|
+
)),
|
|
118
|
+
"aria-selected": r.value === t,
|
|
119
|
+
"aria-controls": `panel-${t}`,
|
|
120
|
+
role: "tab",
|
|
121
|
+
tabindex: "0",
|
|
122
|
+
onKeydown: (f) => k(f, t),
|
|
123
|
+
onClick: (f) => !n.loading && u(t)
|
|
124
|
+
}, C(s.label), 43, A))), 128))
|
|
125
|
+
]),
|
|
126
|
+
y("div", M, [
|
|
127
|
+
B(e.$slots, "default")
|
|
128
|
+
])
|
|
129
|
+
]));
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
export {
|
|
133
|
+
W as default
|
|
134
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),r=require("./Spinner.cjs"),s=["id","aria-labelledby"],c={class:"rounded-xl border ui-border bg-(--ui-surface) p-2 shadow-xs"},u={key:0,class:"flex items-center justify-center p-8"},d={key:1,class:"transition-opacity duration-200 opacity-100"},b={__name:"TabPanel",props:{label:{type:String,required:!0},loading:{type:Boolean,default:!1}},setup(o){const i=o,l=e.inject("tabsContext");if(!l)throw new Error("TabPanel must be used within a Tab component");const t=e.ref(null),a=e.ref(!1);return e.onMounted(()=>{t.value=l.registerTab(i.label),a.value=l.activeIndex.value===t.value,e.watch(l.activeIndex,n=>{a.value=n===t.value})}),e.onUnmounted(()=>{t.value!==null&&l.unregisterTab(t.value)}),(n,v)=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{id:`panel-${t.value}`,role:"tabpanel","aria-labelledby":`tab-${t.value}`,class:"ui-text"},[e.createElementVNode("div",c,[o.loading?(e.openBlock(),e.createElementBlock("div",u,[e.createVNode(r.default,{size:"lg",label:`Loading ${i.label}`},null,8,["label"])])):(e.openBlock(),e.createElementBlock("div",d,[e.renderSlot(n.$slots,"default")]))])],8,s)),[[e.vShow,a.value]])}};exports.default=b;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { inject as c, ref as r, onMounted as d, watch as u, onUnmounted as b, withDirectives as v, createElementBlock as n, openBlock as o, createElementVNode as p, createVNode as f, renderSlot as m, vShow as _ } from "vue";
|
|
2
|
+
import h from "./Spinner.js";
|
|
3
|
+
const x = ["id", "aria-labelledby"], y = { class: "rounded-xl border ui-border bg-(--ui-surface) p-2 shadow-xs" }, g = {
|
|
4
|
+
key: 0,
|
|
5
|
+
class: "flex items-center justify-center p-8"
|
|
6
|
+
}, w = {
|
|
7
|
+
key: 1,
|
|
8
|
+
class: "transition-opacity duration-200 opacity-100"
|
|
9
|
+
}, B = {
|
|
10
|
+
__name: "TabPanel",
|
|
11
|
+
props: {
|
|
12
|
+
label: { type: String, required: !0 },
|
|
13
|
+
loading: { type: Boolean, default: !1 }
|
|
14
|
+
},
|
|
15
|
+
setup(i) {
|
|
16
|
+
const s = i, t = c("tabsContext");
|
|
17
|
+
if (!t)
|
|
18
|
+
throw new Error("TabPanel must be used within a Tab component");
|
|
19
|
+
const e = r(null), a = r(!1);
|
|
20
|
+
return d(() => {
|
|
21
|
+
e.value = t.registerTab(s.label), a.value = t.activeIndex.value === e.value, u(t.activeIndex, (l) => {
|
|
22
|
+
a.value = l === e.value;
|
|
23
|
+
});
|
|
24
|
+
}), b(() => {
|
|
25
|
+
e.value !== null && t.unregisterTab(e.value);
|
|
26
|
+
}), (l, T) => v((o(), n("div", {
|
|
27
|
+
id: `panel-${e.value}`,
|
|
28
|
+
role: "tabpanel",
|
|
29
|
+
"aria-labelledby": `tab-${e.value}`,
|
|
30
|
+
class: "ui-text"
|
|
31
|
+
}, [
|
|
32
|
+
p("div", y, [
|
|
33
|
+
i.loading ? (o(), n("div", g, [
|
|
34
|
+
f(h, {
|
|
35
|
+
size: "lg",
|
|
36
|
+
label: `Loading ${s.label}`
|
|
37
|
+
}, null, 8, ["label"])
|
|
38
|
+
])) : (o(), n("div", w, [
|
|
39
|
+
m(l.$slots, "default")
|
|
40
|
+
]))
|
|
41
|
+
])
|
|
42
|
+
], 8, x)), [
|
|
43
|
+
[_, a.value]
|
|
44
|
+
]);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
export {
|
|
48
|
+
B as default
|
|
49
|
+
};
|
|
@@ -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"),r=require("../utils/cn.cjs"),d={__name:"Text",props:{as:{type:String,default:"p"},size:{type:String,default:"md",validator:t=>["xs","sm","md","lg","xl"].includes(t)},variant:{type:String,default:"default",validator:t=>["default","muted","danger"].includes(t)},weight:{type:String,default:"normal",validator:t=>["normal","medium","semibold","bold"].includes(t)},align:{type:String,default:"left",validator:t=>["left","center","right","justify"].includes(t)},class:String},setup(t){const a=t,l=n.cva("leading-relaxed",{variants:{size:{xs:"text-xs",sm:"text-sm",md:"text-base",lg:"text-lg",xl:"text-xl"},variant:{default:"ui-text",muted:"ui-text",danger:"ui-danger"},weight:{normal:"font-normal",medium:"font-medium",semibold:"font-semibold",bold:"font-bold"},align:{left:"text-left",center:"text-center",right:"text-right",justify:"text-justify"}}}),i=e.computed(()=>r.cn(l({size:a.size,variant:a.variant,weight:a.weight,align:a.align}),a.class));return(s,u)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.as),{class:e.normalizeClass(i.value)},{default:e.withCtx(()=>[e.renderSlot(s.$slots,"default")]),_:3},8,["class"]))}};exports.default=d;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { computed as n, createBlock as s, openBlock as r, resolveDynamicComponent as d, normalizeClass as o, withCtx as m, renderSlot as u } from "vue";
|
|
2
|
+
import { cva as f } from "class-variance-authority";
|
|
3
|
+
import { cn as c } from "../utils/cn.js";
|
|
4
|
+
const h = {
|
|
5
|
+
__name: "Text",
|
|
6
|
+
props: {
|
|
7
|
+
as: {
|
|
8
|
+
type: String,
|
|
9
|
+
default: "p"
|
|
10
|
+
},
|
|
11
|
+
size: {
|
|
12
|
+
type: String,
|
|
13
|
+
default: "md",
|
|
14
|
+
validator: (t) => ["xs", "sm", "md", "lg", "xl"].includes(t)
|
|
15
|
+
},
|
|
16
|
+
variant: {
|
|
17
|
+
type: String,
|
|
18
|
+
default: "default",
|
|
19
|
+
validator: (t) => ["default", "muted", "danger"].includes(t)
|
|
20
|
+
},
|
|
21
|
+
weight: {
|
|
22
|
+
type: String,
|
|
23
|
+
default: "normal",
|
|
24
|
+
validator: (t) => ["normal", "medium", "semibold", "bold"].includes(t)
|
|
25
|
+
},
|
|
26
|
+
align: {
|
|
27
|
+
type: String,
|
|
28
|
+
default: "left",
|
|
29
|
+
validator: (t) => ["left", "center", "right", "justify"].includes(t)
|
|
30
|
+
},
|
|
31
|
+
class: String
|
|
32
|
+
},
|
|
33
|
+
setup(t) {
|
|
34
|
+
const e = t, a = f(
|
|
35
|
+
"leading-relaxed",
|
|
36
|
+
{
|
|
37
|
+
variants: {
|
|
38
|
+
size: {
|
|
39
|
+
xs: "text-xs",
|
|
40
|
+
sm: "text-sm",
|
|
41
|
+
md: "text-base",
|
|
42
|
+
lg: "text-lg",
|
|
43
|
+
xl: "text-xl"
|
|
44
|
+
},
|
|
45
|
+
variant: {
|
|
46
|
+
default: "ui-text",
|
|
47
|
+
muted: "ui-text",
|
|
48
|
+
danger: "ui-danger"
|
|
49
|
+
},
|
|
50
|
+
weight: {
|
|
51
|
+
normal: "font-normal",
|
|
52
|
+
medium: "font-medium",
|
|
53
|
+
semibold: "font-semibold",
|
|
54
|
+
bold: "font-bold"
|
|
55
|
+
},
|
|
56
|
+
align: {
|
|
57
|
+
left: "text-left",
|
|
58
|
+
center: "text-center",
|
|
59
|
+
right: "text-right",
|
|
60
|
+
justify: "text-justify"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
), l = n(
|
|
65
|
+
() => c(a({
|
|
66
|
+
size: e.size,
|
|
67
|
+
variant: e.variant,
|
|
68
|
+
weight: e.weight,
|
|
69
|
+
align: e.align
|
|
70
|
+
}), e.class)
|
|
71
|
+
);
|
|
72
|
+
return (i, g) => (r(), s(d(t.as), {
|
|
73
|
+
class: o(l.value)
|
|
74
|
+
}, {
|
|
75
|
+
default: m(() => [
|
|
76
|
+
u(i.$slots, "default")
|
|
77
|
+
]),
|
|
78
|
+
_: 3
|
|
79
|
+
}, 8, ["class"]));
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
export {
|
|
83
|
+
h as default
|
|
84
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("vue"),p=require("class-variance-authority"),x=require("../utils/cn.cjs"),h=["id","value","placeholder","disabled","readonly","required","rows","maxlength","aria-describedby","aria-invalid"],z={__name:"Textarea",props:{modelValue:{type:String,default:""},placeholder:{type:String,default:""},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},required:{type:Boolean,default:!1},rows:{type:Number,default:3},maxlength:{type:Number,default:null},resize:{type:String,default:"vertical",validator:e=>["none","vertical","horizontal","both"].includes(e)},autoResize:{type:Boolean,default:!1},size:{type:String,default:"md",validator:e=>["sm","md","lg"].includes(e)},variant:{type:String,default:"default",validator:e=>["default","error","success"].includes(e)},error:{type:String,default:null},id:{type:String,default:null}},emits:["update:modelValue","blur","focus","keydown"],setup(e,{expose:i,emit:n}){const r=e,u=n,l=a.ref(null),o=a.computed(()=>r.id||a.useId()),d=t=>{u("update:modelValue",t.target.value),r.autoResize&&a.nextTick(()=>s())},c=t=>u("blur",t),f=t=>u("focus",t),m=t=>u("keydown",t),y=a.computed(()=>!!r.error||r.variant==="error"),v=a.computed(()=>r.error?`${o.value}-error`:void 0),b=p.cva("block w-full rounded-lg border ui-surface transition-colors duration-200 placeholder:text-(--ui-text-muted) focus:outline-none focus:ring-2 focus:ring-offset-0 disabled:bg-(--ui-surface) disabled:text-(--ui-text) disabled:cursor-not-allowed",{variants:{size:{sm:"px-3 py-1.5 text-sm",md:"px-3 py-2 text-sm",lg:"px-4 py-3 text-base"},variant:{default:"ui-border-strong focus:border-(--ui-primary) focus:ring-(--ui-primary)",error:"border-(--ui-danger-soft) focus:border-(--ui-danger) focus:ring-(--ui-danger)",success:"border-(--ui-success-soft) focus:border-(--ui-success) focus:ring-(--ui-success)"},resize:{none:"resize-none",vertical:"resize-y",horizontal:"resize-x",both:"resize"}},defaultVariants:{size:"md",variant:"default",resize:"vertical"}}),g=a.computed(()=>x.cn(b({size:r.size,variant:r.variant,resize:r.resize}))),s=()=>{if(!l.value||!r.autoResize)return;const t=l.value;t.style.height="auto",t.style.height=`${t.scrollHeight}px`};return a.watch(()=>r.modelValue,()=>{r.autoResize&&a.nextTick(()=>s())},{immediate:!0}),i({focus:()=>l.value?.focus(),blur:()=>l.value?.blur(),select:()=>l.value?.select()}),(t,w)=>(a.openBlock(),a.createElementBlock("textarea",{id:o.value,ref_key:"textareaRef",ref:l,value:e.modelValue,placeholder:e.placeholder,disabled:e.disabled,readonly:e.readonly,required:e.required,rows:e.rows,maxlength:e.maxlength,class:a.normalizeClass(g.value),"aria-describedby":v.value,"aria-invalid":y.value,onInput:d,onBlur:c,onFocus:f,onKeydown:m},null,42,h))}};exports.default=z;
|