@construct-space/ui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Accordion.vue.d.ts +41 -0
- package/dist/components/Alert.vue.d.ts +26 -0
- package/dist/components/Avatar.vue.d.ts +13 -0
- package/dist/components/Badge.vue.d.ts +25 -0
- package/dist/components/Button.vue.d.ts +32 -0
- package/dist/components/Calendar.vue.d.ts +57 -0
- package/dist/components/Card.vue.d.ts +28 -0
- package/dist/components/Checkbox.vue.d.ts +26 -0
- package/dist/components/Chip.vue.d.ts +32 -0
- package/dist/components/ColorPicker.vue.d.ts +21 -0
- package/dist/components/ContextMenu.vue.d.ts +24 -0
- package/dist/components/DashboardPanel.vue.d.ts +37 -0
- package/dist/components/Drawer.vue.d.ts +35 -0
- package/dist/components/Dropdown.vue.d.ts +23 -0
- package/dist/components/DropdownMenu.vue.d.ts +32 -0
- package/dist/components/DropdownMenuItem.vue.d.ts +25 -0
- package/dist/components/Empty.vue.d.ts +17 -0
- package/dist/components/FormField.vue.d.ts +36 -0
- package/dist/components/Icon.vue.d.ts +5 -0
- package/dist/components/Input.vue.d.ts +28 -0
- package/dist/components/Kbd.vue.d.ts +11 -0
- package/dist/components/Modal.vue.d.ts +42 -0
- package/dist/components/Pagination.vue.d.ts +17 -0
- package/dist/components/PanelSection.vue.d.ts +34 -0
- package/dist/components/Popover.vue.d.ts +28 -0
- package/dist/components/Progress.vue.d.ts +23 -0
- package/dist/components/PropRow.vue.d.ts +35 -0
- package/dist/components/RadioGroup.vue.d.ts +28 -0
- package/dist/components/ScrollArea.vue.d.ts +12 -0
- package/dist/components/Select.vue.d.ts +32 -0
- package/dist/components/SelectMenu.vue.d.ts +40 -0
- package/dist/components/Separator.vue.d.ts +12 -0
- package/dist/components/Skeleton.vue.d.ts +17 -0
- package/dist/components/Slideover.vue.d.ts +31 -0
- package/dist/components/Slider.vue.d.ts +21 -0
- package/dist/components/Switch.vue.d.ts +30 -0
- package/dist/components/Table.vue.d.ts +63 -0
- package/dist/components/Tabs.vue.d.ts +28 -0
- package/dist/components/Textarea.vue.d.ts +27 -0
- package/dist/components/Timeline.vue.d.ts +38 -0
- package/dist/components/Toast.vue.d.ts +2 -0
- package/dist/components/Tooltip.vue.d.ts +25 -0
- package/dist/components/Tree.vue.d.ts +157 -0
- package/dist/composables/useAuth.d.ts +39 -0
- package/dist/composables/useToast.d.ts +46 -0
- package/dist/construct-ui.js +15289 -0
- package/dist/index.d.ts +55 -0
- package/dist/layouts/HeaderLayout.vue.d.ts +44 -0
- package/dist/layouts/SidebarLayout.vue.d.ts +43 -0
- package/dist/style.css +2 -0
- package/package.json +60 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export { default as CAccordion } from './components/Accordion.vue';
|
|
2
|
+
export { default as CAlert } from './components/Alert.vue';
|
|
3
|
+
export { default as CAvatar } from './components/Avatar.vue';
|
|
4
|
+
export { default as CBadge } from './components/Badge.vue';
|
|
5
|
+
export { default as CButton } from './components/Button.vue';
|
|
6
|
+
export { default as CCalendar } from './components/Calendar.vue';
|
|
7
|
+
export { default as CCard } from './components/Card.vue';
|
|
8
|
+
export { default as CCheckbox } from './components/Checkbox.vue';
|
|
9
|
+
export { default as CChip } from './components/Chip.vue';
|
|
10
|
+
export { default as CColorPicker } from './components/ColorPicker.vue';
|
|
11
|
+
export { default as CContextMenu } from './components/ContextMenu.vue';
|
|
12
|
+
export { default as CDashboardPanel } from './components/DashboardPanel.vue';
|
|
13
|
+
export { default as CDrawer } from './components/Drawer.vue';
|
|
14
|
+
export { default as CDropdown } from './components/Dropdown.vue';
|
|
15
|
+
export { default as CDropdownMenu } from './components/DropdownMenu.vue';
|
|
16
|
+
export { default as CDropdownMenuItem } from './components/DropdownMenuItem.vue';
|
|
17
|
+
export { default as CEmpty } from './components/Empty.vue';
|
|
18
|
+
export { default as CFormField } from './components/FormField.vue';
|
|
19
|
+
export { default as CIcon } from './components/Icon.vue';
|
|
20
|
+
export { default as CInput } from './components/Input.vue';
|
|
21
|
+
export { default as CKbd } from './components/Kbd.vue';
|
|
22
|
+
export { default as CModal } from './components/Modal.vue';
|
|
23
|
+
export { default as CPagination } from './components/Pagination.vue';
|
|
24
|
+
export { default as CPanelSection } from './components/PanelSection.vue';
|
|
25
|
+
export { default as CPopover } from './components/Popover.vue';
|
|
26
|
+
export { default as CProgress } from './components/Progress.vue';
|
|
27
|
+
export { default as CPropRow } from './components/PropRow.vue';
|
|
28
|
+
export { default as CRadioGroup } from './components/RadioGroup.vue';
|
|
29
|
+
export { default as CScrollArea } from './components/ScrollArea.vue';
|
|
30
|
+
export { default as CSelect } from './components/Select.vue';
|
|
31
|
+
export { default as CSelectMenu } from './components/SelectMenu.vue';
|
|
32
|
+
export { default as CSeparator } from './components/Separator.vue';
|
|
33
|
+
export { default as CSkeleton } from './components/Skeleton.vue';
|
|
34
|
+
export { default as CSlideover } from './components/Slideover.vue';
|
|
35
|
+
export { default as CSlider } from './components/Slider.vue';
|
|
36
|
+
export { default as CSwitch } from './components/Switch.vue';
|
|
37
|
+
export { default as CTable } from './components/Table.vue';
|
|
38
|
+
export { default as CTabs } from './components/Tabs.vue';
|
|
39
|
+
export { default as CTextarea } from './components/Textarea.vue';
|
|
40
|
+
export { default as CTimeline } from './components/Timeline.vue';
|
|
41
|
+
export { default as CToast } from './components/Toast.vue';
|
|
42
|
+
export { default as CTooltip } from './components/Tooltip.vue';
|
|
43
|
+
export { default as CTree } from './components/Tree.vue';
|
|
44
|
+
export { default as SidebarLayout } from './layouts/SidebarLayout.vue';
|
|
45
|
+
export { default as HeaderLayout } from './layouts/HeaderLayout.vue';
|
|
46
|
+
export { useToast } from './composables/useToast';
|
|
47
|
+
export type { Toast } from './composables/useToast';
|
|
48
|
+
export { useAuth } from './composables/useAuth';
|
|
49
|
+
export type { AuthUser, UseAuthOptions } from './composables/useAuth';
|
|
50
|
+
import './tokens/tokens.css';
|
|
51
|
+
import type { App } from 'vue';
|
|
52
|
+
export declare const ConstructUI: {
|
|
53
|
+
install(app: App): void;
|
|
54
|
+
};
|
|
55
|
+
export default ConstructUI;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export interface HeaderNavItem {
|
|
2
|
+
label: string;
|
|
3
|
+
to: string;
|
|
4
|
+
active?: boolean;
|
|
5
|
+
}
|
|
6
|
+
type __VLS_Props = {
|
|
7
|
+
serviceName?: string;
|
|
8
|
+
navItems?: HeaderNavItem[];
|
|
9
|
+
userName?: string;
|
|
10
|
+
userAvatar?: string;
|
|
11
|
+
accentColor?: string;
|
|
12
|
+
showAuth?: boolean;
|
|
13
|
+
};
|
|
14
|
+
declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {};
|
|
15
|
+
type __VLS_Slots = {} & {
|
|
16
|
+
logo?: (props: typeof __VLS_1) => any;
|
|
17
|
+
} & {
|
|
18
|
+
actions?: (props: typeof __VLS_3) => any;
|
|
19
|
+
} & {
|
|
20
|
+
default?: (props: typeof __VLS_5) => any;
|
|
21
|
+
};
|
|
22
|
+
declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
23
|
+
navigate: (to: string) => any;
|
|
24
|
+
logout: () => any;
|
|
25
|
+
login: () => any;
|
|
26
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
27
|
+
onNavigate?: ((to: string) => any) | undefined;
|
|
28
|
+
onLogout?: (() => any) | undefined;
|
|
29
|
+
onLogin?: (() => any) | undefined;
|
|
30
|
+
}>, {
|
|
31
|
+
accentColor: string;
|
|
32
|
+
navItems: HeaderNavItem[];
|
|
33
|
+
serviceName: string;
|
|
34
|
+
userName: string;
|
|
35
|
+
userAvatar: string;
|
|
36
|
+
showAuth: boolean;
|
|
37
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
38
|
+
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
39
|
+
export default _default;
|
|
40
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
41
|
+
new (): {
|
|
42
|
+
$slots: S;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export interface NavItem {
|
|
2
|
+
icon: string;
|
|
3
|
+
label: string;
|
|
4
|
+
to: string;
|
|
5
|
+
active?: boolean;
|
|
6
|
+
}
|
|
7
|
+
type __VLS_Props = {
|
|
8
|
+
navItems?: NavItem[];
|
|
9
|
+
serviceName?: string;
|
|
10
|
+
serviceIcon?: string;
|
|
11
|
+
userName?: string;
|
|
12
|
+
userAvatar?: string;
|
|
13
|
+
accentColor?: string;
|
|
14
|
+
};
|
|
15
|
+
declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {};
|
|
16
|
+
type __VLS_Slots = {} & {
|
|
17
|
+
logo?: (props: typeof __VLS_1) => any;
|
|
18
|
+
} & {
|
|
19
|
+
'user-menu'?: (props: typeof __VLS_3) => any;
|
|
20
|
+
} & {
|
|
21
|
+
default?: (props: typeof __VLS_5) => any;
|
|
22
|
+
};
|
|
23
|
+
declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
24
|
+
navigate: (to: string) => any;
|
|
25
|
+
logout: () => any;
|
|
26
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
27
|
+
onNavigate?: ((to: string) => any) | undefined;
|
|
28
|
+
onLogout?: (() => any) | undefined;
|
|
29
|
+
}>, {
|
|
30
|
+
accentColor: string;
|
|
31
|
+
navItems: NavItem[];
|
|
32
|
+
serviceName: string;
|
|
33
|
+
serviceIcon: string;
|
|
34
|
+
userName: string;
|
|
35
|
+
userAvatar: string;
|
|
36
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
37
|
+
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
38
|
+
export default _default;
|
|
39
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
40
|
+
new (): {
|
|
41
|
+
$slots: S;
|
|
42
|
+
};
|
|
43
|
+
};
|
package/dist/style.css
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
@import "https://fonts.googleapis.com/css2?family=Rubik:wght@300;400;500;600;700&display=swap";@keyframes progress-indeterminate-f944cf9d{0%{transform:translate(-100%)}to{transform:translate(350%)}}.animate-progress-indeterminate[data-v-f944cf9d]{animation:1.5s ease-in-out infinite progress-indeterminate-f944cf9d}.toast-enter-active[data-v-98416c66]{transition:all .3s cubic-bezier(.4,0,.2,1)}.toast-leave-active[data-v-98416c66]{transition:all .2s cubic-bezier(.4,0,1,1)}.toast-enter-from[data-v-98416c66],.toast-leave-to[data-v-98416c66]{opacity:0;transform:translate(100%)}.toast-move[data-v-98416c66]{transition:transform .3s cubic-bezier(.4,0,.2,1)}.tree-root[data-v-9be5dd89]:focus-visible{outline:none}.cui-sidebar-layout{min-height:100vh;display:flex}.cui-sidebar{background:var(--app-background,#18181b);border-right:1px solid var(--app-border,#27272a);z-index:100;flex-direction:column;align-items:center;width:60px;padding:16px 0;display:flex;position:fixed;top:0;bottom:0;left:0}.cui-sidebar-logo{color:var(--app-foreground,#fafafa);margin-bottom:24px;font-size:20px;font-weight:700}.cui-sidebar-logo-text{justify-content:center;align-items:center;width:32px;height:32px;display:flex}.cui-sidebar-nav{flex-direction:column;flex:1;align-items:center;gap:4px;display:flex}.cui-sidebar-nav-item{cursor:pointer;width:40px;height:40px;color:var(--app-muted,#71717a);border-radius:8px;justify-content:center;align-items:center;transition:all .15s;display:flex;position:relative}.cui-sidebar-nav-item:hover{color:var(--app-foreground,#fafafa);background:#ffffff0f}.cui-sidebar-nav-item.active{color:var(--app-accent,#ff2d55);background:#ffffff0f}.cui-sidebar-tooltip{background:var(--app-foreground,#fafafa);color:var(--app-background,#18181b);white-space:nowrap;pointer-events:none;z-index:200;border-radius:6px;padding:5px 10px;font-size:12px;font-weight:500;position:absolute;top:50%;left:52px;transform:translateY(-50%)}.cui-sidebar-user{position:relative}.cui-sidebar-avatar{color:#fff;cursor:pointer;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:12px;font-weight:600;display:flex;overflow:hidden}.cui-sidebar-avatar img{object-fit:cover;width:100%;height:100%}.cui-sidebar-user-menu{background:var(--app-background,#18181b);border:1px solid var(--app-border,#27272a);z-index:200;border-radius:8px;min-width:160px;padding:4px;position:absolute;bottom:0;left:52px}.cui-sidebar-user-menu-item{color:var(--app-foreground,#fafafa);cursor:pointer;border-radius:6px;padding:8px 12px;font-size:13px;transition:background .15s}.cui-sidebar-user-menu-item:hover{background:#ffffff0f}.cui-sidebar-main{flex:1;min-height:100vh;margin-left:60px}.cui-header-layout{flex-direction:column;min-height:100vh;display:flex}.cui-header{border-bottom:1px solid var(--app-border,#27272a);z-index:100;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#12121eeb;padding:14px 0;position:sticky;top:0}.cui-header-container{justify-content:space-between;align-items:center;max-width:1200px;margin:0 auto;padding:0 24px;display:flex}.cui-header-left{align-items:center;gap:24px;display:flex}.cui-header-logo{color:var(--app-foreground,#fafafa);cursor:pointer;letter-spacing:.02em;font-size:16px;font-weight:700}.cui-header-logo-sub{color:var(--app-muted,#71717a);font-weight:400}.cui-header-nav{align-items:center;gap:16px;display:flex}.cui-header-nav a{color:var(--app-muted,#71717a);cursor:pointer;font-size:13px;text-decoration:none;transition:color .15s}.cui-header-nav a:hover,.cui-header-nav a.active{color:var(--app-foreground,#fafafa)}.cui-header-right{align-items:center;gap:12px;display:flex}.cui-header-avatar{color:#fff;cursor:pointer;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:13px;font-weight:600;display:flex;overflow:hidden}.cui-header-avatar img{object-fit:cover;width:100%;height:100%}.cui-header-signin{background:var(--app-accent,#ff2d55);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:6px 16px;font-family:inherit;font-size:13px;font-weight:500;transition:opacity .15s}.cui-header-signin:hover{opacity:.9}.cui-header-main{flex:1}:root{--app-background:#fff;--app-foreground:#1e293b;--app-muted:#94a3b8;--app-accent:#ff2d55;--app-accent-hover:#ff1744;--app-accent-foreground:#fff;--app-border:#e2e8f0;--app-canvas-bg:#f1f5f9;--app-status-bg:#f8fafc;--app-card-bg:#fff;--app-card-hover:#f8fafc;--app-input-bg:#fff;--green:#22c55e;--green-bg:#22c55e1a;--red:#ef4444;--red-bg:#ef44441a;--yellow:#eab308;--radius:8px;--radius-lg:12px;--radius-xl:16px;--font-sans:"Rubik", ui-sans-serif, system-ui, sans-serif}.dark,:root.dark,[data-theme=dark]{--app-background:#18181b;--app-foreground:#fafafa;--app-muted:#71717a;--app-accent:#ff2d55;--app-accent-hover:#ff1744;--app-accent-foreground:#fff;--app-border:#27272a;--app-canvas-bg:#09090b;--app-status-bg:#18181b;--app-card-bg:#1e1e22;--app-card-hover:#27272b;--app-input-bg:#18181b}@media (prefers-color-scheme:dark){:root:not(.light):not([data-theme=light]){--app-background:#18181b;--app-foreground:#fafafa;--app-muted:#71717a;--app-accent:#ff2d55;--app-accent-hover:#ff1744;--app-accent-foreground:#fff;--app-border:#27272a;--app-canvas-bg:#09090b;--app-status-bg:#18181b;--app-card-bg:#1e1e22;--app-card-hover:#27272b;--app-input-bg:#18181b}}*,:before,:after{box-sizing:border-box}body{font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}[data-state=checked].bg-primary,[data-state=checked].bg-neutral,button[role=switch][data-state=checked]{background-color:var(--app-accent)!important}button[role=checkbox][data-state=checked],[role=checkbox][data-state=checked]{background-color:var(--app-accent)!important;border-color:var(--app-accent)!important}[data-radix-slider-range],[role=slider] [data-orientation]>span:first-child{background-color:var(--app-accent)!important}[data-radix-slider-thumb],[role=slider] span[role=slider]{border-color:var(--app-accent)!important}input:focus-visible,textarea:focus-visible,select:focus-visible{border-color:var(--app-accent)!important;outline:none!important}label{text-transform:uppercase;letter-spacing:.05em;font-size:.75rem;font-weight:600}input:not([type=checkbox]):not([type=radio]):not([type=range]),textarea,select{color:var(--app-foreground)!important;caret-color:var(--app-foreground)!important}input::placeholder,textarea::placeholder{color:var(--app-muted)!important;opacity:1!important}.btn{border:1px solid var(--app-border);border-radius:var(--radius);background:var(--app-input-bg);color:var(--app-foreground);cursor:pointer;align-items:center;gap:6px;padding:8px 18px;font-family:inherit;font-size:13px;font-weight:500;text-decoration:none;transition:all .15s;display:inline-flex}.btn:hover{background:var(--app-card-hover);border-color:var(--app-muted)}.btn-primary{background:var(--app-accent);border-color:var(--app-accent);color:#fff}.btn-primary:hover{background:var(--app-accent-hover);border-color:var(--app-accent-hover)}.btn-sm{padding:5px 12px;font-size:12px}.btn-lg{border-radius:var(--radius-lg);padding:12px 28px;font-size:15px;font-weight:600}.btn-ghost{color:var(--app-muted);background:0 0;border-color:#0000}.btn-ghost:hover{color:var(--app-foreground);background:var(--app-card-bg)}.btn-icon{color:var(--app-muted);cursor:pointer;border-radius:var(--radius);background:0 0;border:none;padding:6px;font-size:14px}.btn-icon:hover{background:var(--app-card-hover);color:var(--app-foreground)}.btn-danger{color:var(--red)}.btn-danger:hover{background:var(--red-bg);color:var(--red)}.container{max-width:1200px;margin:0 auto;padding:0 24px}.page{padding:32px 0}.page-title{letter-spacing:-.02em;margin-bottom:4px;font-size:22px;font-weight:600}.page-subtitle{color:var(--app-muted);margin-bottom:28px;font-size:14px}.card{background:var(--app-card-bg);border:1px solid var(--app-border);border-radius:var(--radius-lg);overflow:hidden}.card-header{border-bottom:1px solid var(--app-border);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.card-title{font-size:14px;font-weight:600}.card-body{padding:20px}.form-group{margin-bottom:16px}.form-label{color:var(--app-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px;font-size:12px;font-weight:500;display:block}.form-input{background:var(--app-input-bg);border:1px solid var(--app-border);border-radius:var(--radius);width:100%;color:var(--app-foreground);outline:none;padding:9px 12px;font-family:inherit;font-size:13px;transition:border-color .15s}.form-input:focus{border-color:var(--app-accent)}.form-input::placeholder{color:var(--app-muted)}.form-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.badge{text-transform:uppercase;letter-spacing:.05em;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:600}.spinner{border:2px solid var(--app-border);border-top-color:var(--app-accent);border-radius:50%;width:18px;height:18px;animation:.6s linear infinite cui-spin;display:inline-block}@keyframes cui-spin{to{transform:rotate(360deg)}}.loading-state{color:var(--app-muted);justify-content:center;align-items:center;gap:10px;padding:60px 0;font-size:14px;display:flex}.empty-state{text-align:center;color:var(--app-muted);padding:60px 20px}.empty-state p{margin-bottom:16px;font-size:14px}.cui-toast{background:var(--app-card-bg);border:1px solid var(--app-border);border-radius:var(--radius);z-index:2000;padding:12px 20px;font-size:13px;animation:.2s cui-slideUp;position:fixed;bottom:24px;right:24px}.cui-toast.error{border-color:var(--red);color:var(--red)}.cui-toast.success{border-color:var(--green);color:var(--green)}@keyframes cui-slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.tabs{border-bottom:1px solid var(--app-border);margin-bottom:24px;display:flex}.tab{color:var(--app-muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 20px;font-family:inherit;font-size:13px;font-weight:500;transition:all .15s}.tab:hover{color:var(--app-foreground)}.tab.active{color:var(--app-foreground);border-bottom-color:var(--app-accent)}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--app-card-bg);border:1px solid var(--app-border);border-radius:var(--radius-lg);width:480px;max-width:90vw;max-height:85vh;overflow-y:auto}.modal-header{justify-content:space-between;align-items:center;padding:20px 24px 16px;display:flex}.modal-title{font-size:16px;font-weight:600}.modal-body{padding:0 24px 24px}.modal-footer{border-top:1px solid var(--app-border);justify-content:flex-end;gap:8px;padding:16px 24px;display:flex}.info-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;display:grid}.info-item{background:var(--app-input-bg);border-radius:var(--radius);padding:16px}.info-label{text-transform:uppercase;letter-spacing:.05em;color:var(--app-muted);margin-bottom:6px;font-size:11px;font-weight:600}.info-value{font-size:14px;font-weight:500}.toggle{background:var(--app-border);cursor:pointer;border:none;border-radius:11px;width:40px;height:22px;transition:background .2s;position:relative}.toggle.active{background:var(--app-accent)}.toggle:after{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .2s;position:absolute;top:3px;left:3px}.toggle.active:after{transform:translate(18px)}.badge-a{color:#60a5fa;background:#60a5fa1f}.badge-aaaa{color:#a78bfa;background:#a78bfa1f}.badge-cname{color:#34d399;background:#34d3991f}.badge-mx{color:#fbbf24;background:#fbbf241f}.badge-txt{color:#f87171;background:#f871711f}.badge-ns{color:#38bdf8;background:#38bdf81f}.badge-srv{color:#fb923c;background:#fb923c1f}.badge-default{color:var(--app-muted);background:#8888a01f}.dns-table{border-collapse:collapse;width:100%}.dns-table th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--app-muted);border-bottom:1px solid var(--app-border);padding:10px 16px;font-size:11px;font-weight:600}.dns-table td{border-bottom:1px solid var(--app-border);vertical-align:middle;padding:12px 16px;font-size:13px}.dns-table tr:last-child td{border-bottom:none}.dns-table tr:hover td{background:var(--app-card-hover)}.back-link{color:var(--app-muted);align-items:center;gap:6px;margin-bottom:20px;font-size:13px;text-decoration:none;transition:color .15s;display:inline-flex}.back-link:hover{color:var(--app-foreground)}@media (width<=768px){.form-row,.info-grid{grid-template-columns:1fr}}
|
|
2
|
+
/*$vite$:1*/
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@construct-space/ui",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Construct UI — Vue 3 component library for Construct services",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/construct-ui.js",
|
|
7
|
+
"module": "./dist/construct-ui.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/construct-ui.js",
|
|
12
|
+
"types": "./dist/index.d.ts"
|
|
13
|
+
},
|
|
14
|
+
"./tokens": "./dist/tokens.css",
|
|
15
|
+
"./style.css": "./dist/style.css"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"README.md"
|
|
20
|
+
],
|
|
21
|
+
"publishConfig": {
|
|
22
|
+
"access": "public"
|
|
23
|
+
},
|
|
24
|
+
"keywords": [
|
|
25
|
+
"construct",
|
|
26
|
+
"ui",
|
|
27
|
+
"vue",
|
|
28
|
+
"components",
|
|
29
|
+
"design-system"
|
|
30
|
+
],
|
|
31
|
+
"homepage": "https://github.com/construct-space/ui",
|
|
32
|
+
"repository": {
|
|
33
|
+
"type": "git",
|
|
34
|
+
"url": "https://github.com/construct-space/ui.git"
|
|
35
|
+
},
|
|
36
|
+
"license": "MIT",
|
|
37
|
+
"author": {
|
|
38
|
+
"name": "Construct Team"
|
|
39
|
+
},
|
|
40
|
+
"scripts": {
|
|
41
|
+
"build": "vite build && vue-tsc --emitDeclarationOnly",
|
|
42
|
+
"dev": "vite build --watch",
|
|
43
|
+
"prepublishOnly": "bun run build",
|
|
44
|
+
"release": "bun run build && npm publish"
|
|
45
|
+
},
|
|
46
|
+
"peerDependencies": {
|
|
47
|
+
"vue": "^3.5.0"
|
|
48
|
+
},
|
|
49
|
+
"dependencies": {
|
|
50
|
+
"reka-ui": "^2.0.0",
|
|
51
|
+
"@iconify/vue": "^4.0.0"
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"vue": "^3.5.28",
|
|
55
|
+
"typescript": "^5.9.3",
|
|
56
|
+
"vite": "^8.0.0",
|
|
57
|
+
"@vitejs/plugin-vue": "^6.0.5",
|
|
58
|
+
"vue-tsc": "^2.0.0"
|
|
59
|
+
}
|
|
60
|
+
}
|