@aham.ro/ui-designer 0.1.5 → 0.1.8

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 CHANGED
@@ -1,18 +1,18 @@
1
- # IAM Designer
1
+ # UI Designer
2
2
 
3
- Vue 3 components for the Aham IAM designer.
3
+ Vue 3 components for the UI designer for IAM systems and email templates.
4
4
 
5
5
  ## Installation
6
6
 
7
7
  ```bash
8
- npm install @aham.ro/iam-designer
8
+ npm install @aham.ro/ui-designer
9
9
  ```
10
10
 
11
11
  ## Usage
12
12
 
13
13
  ```vue
14
14
  <script setup lang="ts">
15
- import { Designer } from '@aham.ro/iam-designer'
15
+ import { Designer } from '@aham.ro/ui-designer'
16
16
  </script>
17
17
 
18
18
  <template>
package/dist/index.d.ts CHANGED
@@ -1,9 +1,8 @@
1
1
  import './designer.css';
2
2
  export { default as Designer } from './Designer.vue';
3
3
  export { default as TextScroller } from './widgets/TextScroller.vue';
4
- export type { MoreMenuItem, Template } from './widgets/header/types';
4
+ export type { ChecklistContext, ChecklistItem, MoreMenuItem, Template } from './widgets/header/types';
5
5
  export { useChecklistStore } from './stores/checklist';
6
- export type { ChecklistItem } from './stores/checklist';
7
6
  export { useScreensStore } from './stores/screens';
8
7
  export type { DynamicScreen, PredefinedScreen, Screen } from './stores/screens';
9
8
  export * from './widgets/components';
@@ -1,8 +1,5 @@
1
- export interface ChecklistItem {
2
- id: string;
3
- label: string;
4
- complete: boolean;
5
- }
1
+ import type { ChecklistItem } from '../widgets/header/types';
2
+ export type { ChecklistItem } from '../widgets/header/types';
6
3
  export declare const useChecklistStore: import("pinia").StoreDefinition<"checklist", {
7
4
  items: ChecklistItem[];
8
5
  }, {}, {
@@ -0,0 +1,2 @@
1
+ @import "https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,0..200";.ui-designer{--designer-panel:var(--color-panel,#fff);--designer-panel-raised:var(--color-panel-raised,#f5f2ee);--designer-text:var(--color-text,#111);--designer-muted:var(--color-text-muted,#6b7280);--designer-border:var(--color-border,#ece9e4);--designer-shell:var(--color-background,#fafaf9);--designer-primary:var(--color-primary,#2563eb);--designer-space-xs:var(--space-xs,6px);--designer-space-sm:var(--space-sm,10px);--designer-space-md:var(--space-md,14px);--designer-font-xs:var(--font-xs,11px);--designer-font-sm:var(--font-sm,12.5px);--designer-font-lg:var(--font-lg,19px)}.ui-designer [data-overlayscrollbars]{--os-size:6px;--os-padding-perpendicular:2px;--os-track-border-radius:4px;--os-handle-border-radius:4px;--os-handle-bg:color-mix(in srgb, var(--designer-muted) 35%, transparent);--os-handle-bg-hover:var(--designer-muted);--os-handle-bg-active:var(--designer-primary)}.ui-designer [data-overlayscrollbars]>.os-scrollbar-horizontal{display:none}.text-scroller[data-v-8fac895b]{white-space:nowrap;min-width:0;display:block;overflow:hidden}.text-scroller-content[data-v-8fac895b]{text-overflow:ellipsis;vertical-align:top;min-width:100%;display:inline-block;overflow:hidden}.text-scroller.scrolling .text-scroller-content[data-v-8fac895b]{animation:text-scroller-loop-8fac895b var(--scroll-duration) linear;text-overflow:clip}@keyframes text-scroller-loop-8fac895b{0%,15%{transform:translate(0)}85%,to{transform:translateX(calc(-1 * var(--scroll-distance)))}}.component-list[data-v-931b78ec]{border-top:1px solid var(--designer-border);flex-direction:column;width:100%;min-width:0;min-height:0;display:flex;overflow:hidden}.component-head[data-v-931b78ec]{padding:12px var(--designer-space-sm) 8px;color:var(--designer-muted);font-size:var(--designer-font-xs);letter-spacing:.08em;text-transform:uppercase;flex:none}.component-content[data-v-931b78ec]{box-sizing:border-box;flex:auto;width:100%;min-width:0;height:0;min-height:0;padding:0 0 12px}.palette-search[data-v-931b78ec]{border:1px solid var(--designer-border);background:var(--designer-shell);color:var(--designer-muted);border-radius:7px;flex:none;align-items:center;gap:7px;margin:0 10px 10px;padding:7px 8px;display:flex}.palette-search input[data-v-931b78ec]{width:100%;min-width:0;color:var(--designer-text);font:inherit;font-size:var(--designer-font-sm);background:0 0;border:0;outline:0}.component-group+.component-group[data-v-931b78ec]{margin-top:14px}.component-groups[data-v-931b78ec]{box-sizing:border-box;width:100%;min-width:0;padding:0 10px}.component-content[data-v-931b78ec] [data-overlayscrollbars-contents]{box-sizing:border-box;width:100%;min-width:0}.component-content[data-v-931b78ec] [data-overlayscrollbars-viewport]{height:100%!important;overflow-y:scroll!important}.group-label[data-v-931b78ec]{color:var(--designer-muted);font-size:var(--designer-font-xs);letter-spacing:.08em;text-transform:uppercase;padding:0 4px 6px}.component-items[data-v-931b78ec]{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:5px;display:grid}.component-item[data-v-931b78ec]{border:1px solid var(--designer-border);background:var(--designer-panel);min-width:0;color:var(--designer-text);font:inherit;font-size:var(--designer-font-xs);text-align:left;cursor:pointer;border-radius:8px;flex-direction:column;align-items:flex-start;gap:5px;padding:7px;line-height:1.2;display:flex}.component-item[data-v-931b78ec]:hover{border-color:color-mix(in srgb, var(--designer-primary) 35%, var(--designer-border));background:var(--designer-panel-raised);transform:translateY(-1px)}.component-icon[data-v-931b78ec]{background:var(--designer-panel-raised);width:20px;height:20px;color:var(--designer-muted);border-radius:6px;justify-content:center;align-items:center;font-size:14px;display:inline-flex}.component-item:hover .component-icon[data-v-931b78ec]{color:var(--designer-primary)}.component-label[data-v-931b78ec]{width:100%;max-width:100%}.component-empty[data-v-931b78ec]{box-sizing:border-box;width:100%;color:var(--designer-muted);font-size:var(--designer-font-xs);text-align:left;padding:10px 14px;display:block}[data-overlayscrollbars].component-content[data-v-931b78ec]{flex:auto;height:0;min-height:0}.icon-button[data-v-b3b6390f]{border:1px solid var(--color-border,#ece9e4);border-radius:var(--radius-sm,10px);background-color:var(--color-panel,#fff);width:34px;height:34px;color:var(--color-text-muted,#6b7280);font:inherit;cursor:pointer;justify-content:center;align-items:center;padding:0;line-height:1;transition:color .15s,border-color .15s,background-color .15s;display:inline-flex}.icon-button[data-v-b3b6390f]:hover:not(:disabled){color:var(--color-primary,#2563eb);border-color:var(--color-primary,#2563eb);background-color:var(--color-panel-raised,#f5f2ee)}.icon-button[data-v-b3b6390f]:disabled{opacity:.5;cursor:not-allowed}.more-menu[data-v-923fea1e]{position:relative}.more-button[data-v-923fea1e]{border-radius:var(--radius-xs,6px);background-color:var(--color-panel,#fff);width:32px;height:32px;color:var(--color-text,#111);font:inherit;cursor:pointer;border:none;justify-content:center;align-items:center;margin:0;padding:0;line-height:1;display:inline-flex}.more-button[aria-expanded=true][data-v-923fea1e]{background-color:var(--color-panel-raised,#f5f2ee)}.dropdown[data-v-923fea1e]{z-index:1000;border:1px solid var(--designer-border,#ece9e4);border-radius:var(--radius-sm,10px);background:var(--designer-panel,#fff);min-width:180px;color:var(--designer-text,#111);font-family:var(--font-base-family,system-ui, sans-serif);padding:4px;position:fixed;box-shadow:0 8px 24px #0000001f}.dropdown .icon[data-v-923fea1e]{letter-spacing:normal;text-transform:none;white-space:nowrap;-webkit-font-feature-settings:"liga";-webkit-font-smoothing:antialiased;font-feature-settings:"liga";font-variation-settings:"FILL" 0, "wght" 400, "GRAD" 0, "opsz" 24;direction:ltr;font-family:Material Symbols Outlined;font-size:20px;font-style:normal;font-weight:400;line-height:1}.menu-item[data-v-923fea1e]{align-items:center;gap:var(--designer-space-sm,10px);border-radius:var(--radius-xs,6px);width:100%;color:var(--designer-text,#111);font:inherit;font-size:var(--designer-font-sm,12.5px);text-align:left;cursor:pointer;background:0 0;border:0;padding:8px 10px;display:flex}.menu-item[data-v-923fea1e]:hover:not(:disabled){background:var(--designer-panel-raised,#f5f2ee)}.menu-item[data-v-923fea1e]:disabled{opacity:.5;cursor:not-allowed}.save-button[data-v-4a359870]{justify-content:center;align-items:center;gap:var(--space-xs,6px);min-height:32px;padding:6px var(--space-sm,10px);border:1px solid var(--color-primary,#2563eb);border-radius:var(--radius-sm,10px);background-color:var(--color-primary,#2563eb);color:var(--color-on-primary,#fff);font:inherit;font-size:var(--font-sm,12.5px);cursor:pointer;font-weight:500;display:inline-flex}.save-button[data-v-4a359870]:disabled{opacity:.6;cursor:not-allowed}.save-button[data-v-4a359870]:hover{background-color:var(--color-primary-hover,#1d4ed8);border-color:var(--color-primary-hover,#1d4ed8)}.spinner[data-v-4a359870]{border:1px solid;border-right-color:#0000;border-radius:50%;width:14px;height:14px;animation:.75s linear infinite save-button-spin-4a359870}@keyframes save-button-spin-4a359870{to{transform:rotate(360deg)}}header[data-v-b6ce5e30]{box-sizing:border-box;width:100%;height:60px;color:var(--designer-text);border-bottom:1px solid var(--designer-border);font-family:var(--font-base-family,inherit);align-items:center;display:flex}.branding[data-v-b6ce5e30]{height:100%;padding:0 var(--designer-space-md);align-items:center;min-width:0;display:flex}.branding .icon[data-v-b6ce5e30]{margin-right:var(--designer-space-xs);font-size:24px}.branding .title[data-v-b6ce5e30]{text-overflow:ellipsis;white-space:nowrap;max-width:min(60vw,620px);font-weight:500;font-size:var(--designer-font-lg);overflow:hidden}.subject[data-v-b6ce5e30]{align-items:center;gap:var(--designer-space-sm);min-width:0;height:100%;display:flex}.subject .document-name[data-v-b6ce5e30]{text-overflow:ellipsis;white-space:nowrap;max-width:min(35vw,360px);font-size:var(--designer-font-xs);background-color:var(--color-surface-disabled,color-mix(in srgb, var(--designer-text) 4%, var(--designer-panel)));border-radius:var(--radius-xs,6px);color:var(--color-info,var(--designer-primary));padding:4px 8px;font-weight:500;overflow:hidden}.subject .shared[data-v-b6ce5e30]{color:var(--designer-muted);font-size:var(--designer-font-md);cursor:default}.actions[data-v-b6ce5e30]{height:100%;padding:0 var(--designer-space-md);justify-content:flex-end;align-items:center;gap:var(--designer-space-sm);flex:1;display:flex}.icon[data-v-b6ce5e30]{white-space:nowrap;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;line-height:1;display:inline-flex}@media (width<=720px){.subject[data-v-b6ce5e30]{display:none}.actions[data-v-b6ce5e30]{padding-right:var(--designer-space-sm)}}.properties-panel[data-v-d42babf5]{min-height:0;color:var(--designer-text);flex-direction:column;display:flex}.properties-head[data-v-d42babf5]{min-height:52px;padding:0 var(--designer-space-md);border-bottom:1px solid var(--designer-border);font-size:var(--designer-font-sm);align-items:center;gap:8px;display:flex}.property-icon[data-v-d42babf5]{color:var(--designer-primary);font-size:16px}.properties-empty[data-v-d42babf5]{padding:22px var(--designer-space-md);color:var(--designer-muted);font-size:var(--designer-font-sm);line-height:1.5}.layers[data-v-d42babf5]{padding:12px var(--designer-space-md);border-top:1px solid var(--designer-border);margin-top:auto}.layers-title[data-v-d42babf5]{color:var(--designer-muted);font-size:var(--designer-font-xs);letter-spacing:.08em;text-transform:uppercase;margin-bottom:8px}.layer-empty[data-v-d42babf5]{color:var(--designer-muted);font-size:var(--designer-font-sm)}.side-info[data-v-ee9b479a]{border-top:1px solid var(--designer-border);height:fit-content;min-height:0;max-height:150px;color:var(--designer-muted);font-size:var(--designer-font-sm);flex-direction:column;flex:0 auto;padding:12px 0 16px 14px;display:flex;overflow:hidden}.info-title[data-v-ee9b479a]{color:var(--designer-muted);font-size:var(--designer-font-xs);letter-spacing:.08em;text-transform:uppercase;margin-bottom:8px;padding-right:14px}.info-list[data-v-ee9b479a]{flex:0 auto;width:100%;min-width:0;min-height:0}.info-list.scrollable[data-v-ee9b479a]{flex:0 0 102px;height:102px;overflow:hidden}.info-list[data-v-ee9b479a] [data-overlayscrollbars-viewport]{max-height:150px!important;overflow-y:scroll!important}.info-list[data-v-ee9b479a] [data-overlayscrollbars-contents]{box-sizing:border-box;width:100%;min-width:0;padding:0 14px 8px 0}[data-overlayscrollbars].info-list[data-v-ee9b479a]{max-height:150px}.info-row[data-v-ee9b479a]{align-items:flex-start;gap:8px;line-height:1.4;display:flex}.info-row+.info-row[data-v-ee9b479a]{margin-top:7px}.info-dot[data-v-ee9b479a]{background:var(--color-accent-3,#c9973f);border-radius:50%;flex:none;width:7px;height:7px;margin-top:4px}.info-dot.complete[data-v-ee9b479a]{background:var(--color-success,#5aab72)}.template-list[data-v-927e0835]{box-sizing:border-box;border-bottom:1px solid var(--designer-border);width:100%;min-width:0;min-height:0;padding:12px 0 10px;overflow:hidden}.section-head[data-v-927e0835]{padding:0 var(--designer-space-sm) 8px;color:var(--designer-muted);font-size:var(--designer-font-xs);letter-spacing:.08em;text-transform:uppercase;justify-content:space-between;align-items:center;display:flex}.section-head button[data-v-927e0835]{border:1px solid var(--designer-border);background:var(--designer-panel);width:19px;height:19px;color:var(--designer-muted);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}.section-head button span[data-v-927e0835]{line-height:1;display:block;transform:translateY(-1px)}.template-tabs[data-v-927e0835]{flex-direction:column;flex:auto;width:100%;min-width:0;height:0;min-height:0;display:flex;overflow:hidden}.template-tab[data-v-927e0835]{box-sizing:border-box;width:calc(100% - 13px);min-width:0;color:var(--designer-muted);font:inherit;font-size:var(--designer-font-sm);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;gap:7px;margin:0 6px 3px;padding:10px 9px;display:flex}.template-tab[data-v-927e0835]:last-of-type{margin-bottom:0}.template-tab[data-v-927e0835]:hover,.template-tab.active[data-v-927e0835]{background:var(--designer-panel-raised);color:var(--designer-primary)}.tab-icon[data-v-927e0835]{width:14px;height:14px;color:var(--designer-muted);flex:none;font-size:14px}.tab-label[data-v-927e0835]{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.tab-label-input[data-v-927e0835]{box-sizing:border-box;border:1px solid var(--designer-border);background:var(--designer-shell);width:100%;color:var(--designer-text);font:inherit;border-radius:3px;outline:0;padding:1px 3px}.tab-channel[data-v-927e0835]{border:1px solid var(--designer-border);background:var(--designer-panel);color:var(--designer-muted);text-transform:uppercase;border-radius:4px;flex:none;padding:1px 4px;font-size:9px;line-height:1.1}.tab-version[data-v-927e0835]{color:var(--designer-muted);font-size:var(--designer-font-xs)}.tab-changed[data-v-927e0835]{background:var(--color-warning,#c9973f);border-radius:50%;flex:none;width:5px;height:5px;transform:translateY(1px)}.empty-list[data-v-927e0835]{color:var(--designer-muted);font-size:var(--designer-font-sm);margin:0;padding:10px 15px}[data-overlayscrollbars].template-tabs[data-v-927e0835]{flex:auto;width:100%;height:0;min-height:0}.template-tabs[data-v-927e0835] [data-overlayscrollbars-viewport]{height:100%!important;overflow-y:scroll!important}.template-tabs[data-v-927e0835] [data-overlayscrollbars-contents]{box-sizing:border-box;width:100%;min-width:0;padding:0 6px 8px 0}section[data-v-9c3240d0]{box-sizing:border-box;flex-direction:column;height:100%;min-height:0;max-height:100vh;display:flex;position:relative;overflow:hidden}.contents[data-v-9c3240d0]{box-sizing:border-box;flex:auto;height:auto;min-height:0;max-height:none;display:flex;overflow:hidden}.contents aside[data-v-9c3240d0]{border-right:1px solid var(--designer-border);flex-direction:column;flex:0 0 200px;width:200px;min-height:0;max-height:100%;display:flex;overflow:hidden}.contents .sidebar-panels[data-v-9c3240d0]{grid-template-rows:var(--screens-height) 9px minmax(0, calc(100% - var(--screens-height) - 9px));flex:1;min-height:0;display:grid}.contents .sidebar-panels>[data-v-9c3240d0]{min-height:0}.contents .panel-resizer[data-v-9c3240d0]{border:0;border-top:1px solid color-mix(in srgb, var(--designer-border) 55%, transparent);border-bottom:1px solid color-mix(in srgb, var(--designer-border) 55%, transparent);cursor:row-resize;background:0 0;justify-content:center;align-items:center;width:100%;padding:0;display:flex}.contents .panel-resizer span[data-v-9c3240d0]{background:var(--designer-border);border-radius:3px;width:28px;height:3px}.contents .panel-resizer:hover span[data-v-9c3240d0]{background:var(--designer-primary)}.contents .workspace[data-v-9c3240d0]{flex:1;min-width:0;max-height:100%}.contents .properties[data-v-9c3240d0]{border-left:1px solid var(--designer-border);flex:0 0 240px;width:240px;min-height:0;max-height:100%;overflow:auto}.container-component[data-v-42c23412]{box-sizing:border-box;min-width:0;color:var(--designer-text,#111)}.empty[data-v-42c23412]{border:1px dashed var(--designer-border,#d9d5cf);min-height:24px;color:var(--designer-muted,#6b7280);text-align:center;padding:12px}.card-component[data-v-b06c1052]{box-sizing:border-box;min-width:0;color:var(--designer-text,#111);background:var(--designer-panel,#fff)}.empty[data-v-b06c1052]{border:1px dashed var(--designer-border,#d9d5cf);min-height:24px;color:var(--designer-muted,#6b7280);text-align:center;padding:12px}.divider-component[data-v-a6e861b8]{width:100%;color:var(--designer-muted,#6b7280);align-items:center;gap:10px;font-size:.8em;display:flex}.divider-component[data-v-a6e861b8]:before,.divider-component[data-v-a6e861b8]:after{background:var(--designer-border,#e5e7eb);content:"";flex:1;height:1px}.layout-component[data-v-be209bd5]{min-width:0}.empty[data-v-be209bd5]{border:1px dashed var(--designer-border,#d9d5cf);color:var(--designer-muted,#6b7280);text-align:center;padding:12px}.layout-ref-component[data-v-d41ee6eb]{min-width:0;padding-top:22px;position:relative}.badge[data-v-d41ee6eb]{color:var(--designer-primary,#2563eb);font-size:.72em;position:absolute;top:0;left:0}.empty[data-v-d41ee6eb]{border:1px dashed var(--designer-border,#d9d5cf);color:var(--designer-muted,#6b7280);text-align:center;padding:12px}.field-component[data-v-c7f2e797]{color:var(--designer-text,#111);gap:6px;display:grid}.label[data-v-c7f2e797]{font-size:.85em;font-weight:600}.label b[data-v-c7f2e797]{color:#dc2626;margin-left:2px}input[data-v-c7f2e797]{box-sizing:border-box;border:1px solid var(--designer-border,#d9d5cf);background:var(--designer-panel,#fff);width:100%;color:inherit;font:inherit;border-radius:7px;padding:9px 10px}.field-component[data-v-b5ed7071]{color:var(--designer-text,#111);gap:6px;display:grid}.label[data-v-b5ed7071]{font-size:.85em;font-weight:600}.label b[data-v-b5ed7071]{color:#dc2626;margin-left:2px}input[data-v-b5ed7071]{box-sizing:border-box;border:1px solid var(--designer-border,#d9d5cf);background:var(--designer-panel,#fff);width:100%;color:inherit;font:inherit;border-radius:7px;padding:9px 10px}.field-component[data-v-ad9dff41]{color:var(--designer-text,#111);gap:6px;display:grid}.label[data-v-ad9dff41]{font-size:.85em;font-weight:600}.label b[data-v-ad9dff41]{color:#dc2626;margin-left:2px}.field-row[data-v-ad9dff41]{justify-content:space-between;gap:8px;display:flex}.field-row a[data-v-ad9dff41]{color:var(--designer-primary,#2563eb);font-size:.85em}input[data-v-ad9dff41]{box-sizing:border-box;border:1px solid var(--designer-border,#d9d5cf);background:var(--designer-panel,#fff);width:100%;color:inherit;font:inherit;border-radius:7px;padding:9px 10px}.field-component[data-v-1914959e]{color:var(--designer-text,#111);gap:6px;display:grid}.label[data-v-1914959e]{font-size:.85em;font-weight:600}.otp-row[data-v-1914959e]{gap:6px;display:flex}.otp-box[data-v-1914959e]{border:1px solid var(--designer-border,#d9d5cf);background:var(--designer-panel,#fff);border-radius:6px;width:2em;height:2.3em}.checkbox-component[data-v-3d492d6d]{color:var(--designer-text,#111);cursor:default;align-items:center;gap:8px;display:inline-flex}.checkbox-component input[data-v-3d492d6d]{accent-color:var(--designer-primary,#2563eb)}.submit-button[data-v-9807299a]{width:100%;font:inherit;cursor:pointer;border:0;border-radius:7px;padding:10px 14px}.primary[data-v-9807299a]{background:var(--designer-primary,#2563eb);color:#fff}.secondary[data-v-9807299a]{border:1px solid var(--designer-border,#d9d5cf);color:inherit;background:0 0}.social-button[data-v-3045616f]{border:1px solid var(--designer-border,#d9d5cf);background:var(--designer-panel,#fff);width:100%;color:inherit;font:inherit;cursor:pointer;border-radius:7px;justify-content:center;align-items:center;gap:9px;padding:9px 14px;display:flex}.social-icon[data-v-3045616f]{color:#fff;border-radius:4px;place-items:center;width:20px;height:20px;font-size:12px;font-weight:700;display:inline-grid}.text-link[data-v-8d18edb1]{color:var(--designer-primary,#2563eb);text-decoration:none}.text-link[data-v-8d18edb1]:hover{text-decoration:underline}.heading-component[data-v-1c78b10f]{color:var(--designer-text,#111);margin:0}.sm[data-v-1c78b10f]{font-size:1em}.md[data-v-1c78b10f]{font-size:1.2em}.lg[data-v-1c78b10f]{font-size:1.5em}.xl[data-v-1c78b10f]{font-size:1.9em}.text-component[data-v-3be0c0c9]{color:var(--designer-muted,#6b7280);white-space:pre-wrap;margin:0;line-height:1.5}.image-link[data-v-ecc98881]{max-width:100%;text-decoration:none;display:inline-block}.image-component[data-v-ecc98881]{box-sizing:border-box;background:var(--designer-panel-raised,#f5f2ee);min-height:20px;color:var(--designer-muted,#6b7280);place-items:center;display:grid;overflow:hidden}.image-component img[data-v-ecc98881]{object-fit:cover;width:100%;height:100%;display:block}.alert-component[data-v-bf171873]{border-radius:7px;gap:8px;padding:10px 12px;font-size:.9em;display:flex}.info[data-v-bf171873]{color:#1d4ed8;background:#eff6ff}.success[data-v-bf171873]{color:#047857;background:#ecfdf5}.error[data-v-bf171873]{color:#b91c1c;background:#fef2f2}.content-component[data-v-1c551f9d]{min-width:0}.empty[data-v-1c551f9d]{border:1px dashed var(--designer-border,#d9d5cf);min-height:46px;color:var(--designer-muted,#6b7280);text-align:center;padding:14px}.consent-card[data-v-9008f821]{border:1px solid var(--designer-border,#d9d5cf);border-radius:8px;align-items:center;gap:10px;padding:12px;display:flex}.icon[data-v-9008f821]{color:#15803d;background:#dcfce7;border-radius:50%;place-items:center;width:28px;height:28px;font-weight:700;display:grid}.consent-card div[data-v-9008f821]{gap:3px;display:grid}.consent-card span[data-v-9008f821]{color:var(--designer-muted,#6b7280);font-size:.85em}.scope-list[data-v-cdebac9d]{gap:8px;display:grid}.scope[data-v-cdebac9d]{align-items:center;gap:8px;display:flex}.scope>span[data-v-cdebac9d]:first-child{color:#15803d;font-weight:700}
2
+ /*$vite$:1*/
@@ -1803,7 +1803,7 @@ var Gr = () => {
1803
1803
  })
1804
1804
  ]));
1805
1805
  }
1806
- }), [["__scopeId", "data-v-29d47f96"]]), si = [
1806
+ }), [["__scopeId", "data-v-931b78ec"]]), si = [
1807
1807
  "title",
1808
1808
  "aria-label",
1809
1809
  "disabled"
@@ -1985,34 +1985,62 @@ var Gr = () => {
1985
1985
  function Ei(e, t) {
1986
1986
  return v(), a("section", Ti, [...t[0] ||= [s("<div class=\"properties-head\" data-v-d42babf5><span class=\"property-icon icon\" data-v-d42babf5>radio_button_unchecked</span><strong data-v-d42babf5>No selection</strong></div><div class=\"properties-empty\" data-v-d42babf5>Select an element on the canvas, or add one from the left, to edit its properties here.</div><div class=\"layers\" data-v-d42babf5><div class=\"layers-title\" data-v-d42babf5>Layers</div><div class=\"layer-empty\" data-v-d42babf5>No layers yet.</div></div>", 3)]]);
1987
1987
  }
1988
- var Di = /*#__PURE__*/ $(wi, [["render", Ei], ["__scopeId", "data-v-d42babf5"]]), Oi = { class: "side-info" }, ki = /*#__PURE__*/ $(/* @__PURE__ */ u({
1988
+ var Di = /*#__PURE__*/ $(wi, [["render", Ei], ["__scopeId", "data-v-d42babf5"]]), Oi = {
1989
+ key: 0,
1990
+ class: "side-info"
1991
+ }, ki = { class: "info-title" }, Ai = 102, ji = /*#__PURE__*/ $(/* @__PURE__ */ u({
1989
1992
  __name: "SideInfo",
1990
- props: { items: { default: () => [{
1991
- id: "configure-screen",
1992
- label: "Configure the selected screen",
1993
- complete: !1
1994
- }, {
1995
- id: "preview-screen",
1996
- label: "Preview before saving",
1997
- complete: !1
1998
- }] } },
1993
+ props: { items: {} },
1999
1994
  setup(t) {
2000
- return (n, r) => (v(), a("section", Oi, [r[0] ||= o("div", { class: "info-title" }, "Checklist", -1), (v(!0), a(e, null, b(t.items, (e) => (v(), a("div", {
1995
+ let s = t, c = P(), l = y(), u = y(0), d = n(() => (s.items?.length ?? 0) > 1 && u.value > Ai), m;
1996
+ function _() {
1997
+ u.value = l.value?.scrollHeight ?? 0;
1998
+ }
1999
+ return k(() => s.items, () => void f(_), { deep: !0 }), g(() => {
2000
+ f(() => {
2001
+ _(), m = new ResizeObserver(_), l.value && m.observe(l.value);
2002
+ });
2003
+ }), h(() => m?.disconnect()), (t, n) => s.items?.length ? (v(), a("section", Oi, [o("div", ki, T(D(c)("checklist", "Checklist")), 1), d.value ? (v(), r(D(qr), {
2004
+ key: 0,
2005
+ class: "info-list scrollable",
2006
+ options: {
2007
+ overflow: {
2008
+ x: "hidden",
2009
+ y: "scroll"
2010
+ },
2011
+ scrollbars: { autoHide: "never" }
2012
+ },
2013
+ defer: ""
2014
+ }, {
2015
+ default: j(() => [o("div", {
2016
+ ref_key: "listElement",
2017
+ ref: l
2018
+ }, [(v(!0), a(e, null, b(s.items, (e) => (v(), a("div", {
2019
+ key: e.id,
2020
+ class: "info-row"
2021
+ }, [o("span", { class: p(["info-dot", { complete: e.complete }]) }, null, 2), o("span", null, T(e.label), 1)]))), 128))], 512)]),
2022
+ _: 1
2023
+ })) : (v(), a("div", {
2024
+ key: 1,
2025
+ ref_key: "listElement",
2026
+ ref: l,
2027
+ class: "info-list"
2028
+ }, [(v(!0), a(e, null, b(s.items, (e) => (v(), a("div", {
2001
2029
  key: e.id,
2002
2030
  class: "info-row"
2003
- }, [o("span", { class: p(["info-dot", { complete: e.complete }]) }, null, 2), o("span", null, T(e.label), 1)]))), 128))]));
2031
+ }, [o("span", { class: p(["info-dot", { complete: e.complete }]) }, null, 2), o("span", null, T(e.label), 1)]))), 128))], 512))])) : i("", !0);
2004
2032
  }
2005
- }), [["__scopeId", "data-v-f439ecfe"]]), Ai = { class: "template-list" }, ji = { class: "section-head" }, Mi = ["title"], Ni = ["aria-label", "title"], Pi = ["onClick"], Fi = {
2033
+ }), [["__scopeId", "data-v-ee9b479a"]]), Mi = { class: "template-list" }, Ni = { class: "section-head" }, Pi = ["title"], Fi = ["aria-label", "title"], Ii = ["onClick"], Li = {
2006
2034
  class: "tab-icon icon",
2007
2035
  "aria-hidden": "true"
2008
- }, Ii = ["onKeydown", "onBlur"], Li = { class: "tab-channel" }, Ri = { class: "tab-version" }, zi = {
2036
+ }, Ri = ["onKeydown", "onBlur"], zi = { class: "tab-channel" }, Bi = { class: "tab-version" }, Vi = {
2009
2037
  key: 2,
2010
2038
  class: "tab-changed",
2011
2039
  "aria-label": "Unsaved changes"
2012
- }, Bi = {
2040
+ }, Hi = {
2013
2041
  key: 0,
2014
2042
  class: "empty-list"
2015
- }, Vi = /*#__PURE__*/ $(/* @__PURE__ */ u({
2043
+ }, Ui = /*#__PURE__*/ $(/* @__PURE__ */ u({
2016
2044
  __name: "TemplateList",
2017
2045
  props: {
2018
2046
  templates: {},
@@ -2043,12 +2071,12 @@ var Di = /*#__PURE__*/ $(wi, [["render", Ei], ["__scopeId", "data-v-d42babf5"]])
2043
2071
  }
2044
2072
  return k(() => s.focusedTemplateId, (e) => {
2045
2073
  e && S(e);
2046
- }, { immediate: !0 }), (n, s) => (v(), a("section", Ai, [o("div", ji, [o("span", { title: D(d)("screens", "Screens") }, T(D(d)("screens", "Screens")), 9, Mi), o("button", {
2074
+ }, { immediate: !0 }), (n, s) => (v(), a("section", Mi, [o("div", Ni, [o("span", { title: D(d)("screens", "Screens") }, T(D(d)("screens", "Screens")), 9, Pi), o("button", {
2047
2075
  type: "button",
2048
2076
  "aria-label": D(d)("add-screen", "Add screen"),
2049
2077
  title: D(d)("add-screen", "Add screen"),
2050
2078
  onClick: s[0] ||= (e) => u("add")
2051
- }, [...s[4] ||= [o("span", { "aria-hidden": "true" }, "+", -1)]], 8, Ni)]), l(D(qr), {
2079
+ }, [...s[4] ||= [o("span", { "aria-hidden": "true" }, "+", -1)]], 8, Fi)]), l(D(qr), {
2052
2080
  class: "template-tabs",
2053
2081
  options: {
2054
2082
  overflow: {
@@ -2067,7 +2095,7 @@ var Di = /*#__PURE__*/ $(wi, [["render", Ei], ["__scopeId", "data-v-d42babf5"]])
2067
2095
  class: p(["template-tab", { active: t.focusedTemplateId ? e.id === t.focusedTemplateId : n === 0 }]),
2068
2096
  onClick: (t) => u("select", e.id)
2069
2097
  }, [
2070
- o("span", Fi, T(e.icon), 1),
2098
+ o("span", Li, T(e.icon), 1),
2071
2099
  h.value === e.id ? M((v(), a("input", {
2072
2100
  key: 0,
2073
2101
  ref_for: !0,
@@ -2080,7 +2108,7 @@ var Di = /*#__PURE__*/ $(wi, [["render", Ei], ["__scopeId", "data-v-d42babf5"]])
2080
2108
  onDblclick: s[3] ||= N(() => {}, ["stop"]),
2081
2109
  onKeydown: [ee(N((t) => w(e), ["prevent"]), ["enter"]), ee(N(E, ["prevent"]), ["esc"])],
2082
2110
  onBlur: (t) => w(e)
2083
- }, null, 40, Ii)), [[O, g.value]]) : (v(), r(Yr, {
2111
+ }, null, 40, Ri)), [[O, g.value]]) : (v(), r(Yr, {
2084
2112
  key: 1,
2085
2113
  class: "tab-label",
2086
2114
  onDblclick: N((t) => e.type === "dynamic" && C(e), ["stop"])
@@ -2088,14 +2116,14 @@ var Di = /*#__PURE__*/ $(wi, [["render", Ei], ["__scopeId", "data-v-d42babf5"]])
2088
2116
  default: j(() => [c(T(e.name), 1)]),
2089
2117
  _: 2
2090
2118
  }, 1032, ["onDblclick"])),
2091
- o("span", Li, T(e.channel.charAt(0).toUpperCase()), 1),
2092
- o("span", Ri, T(e.version), 1),
2093
- e.changed ? (v(), a("span", zi)) : i("", !0)
2094
- ], 10, Pi))), 128)), t.templates?.length ? i("", !0) : (v(), a("p", Bi, "No screens yet."))]),
2119
+ o("span", zi, T(e.channel.charAt(0).toUpperCase()), 1),
2120
+ o("span", Bi, T(e.version), 1),
2121
+ e.changed ? (v(), a("span", Vi)) : i("", !0)
2122
+ ], 10, Ii))), 128)), t.templates?.length ? i("", !0) : (v(), a("p", Hi, "No screens yet."))]),
2095
2123
  _: 1
2096
2124
  })]));
2097
2125
  }
2098
- }), [["__scopeId", "data-v-927e0835"]]), Hi = { class: "iam-designer" }, Ui = { class: "contents" }, Wi = "aham-ui-designer-screens-height", Gi = /*#__PURE__*/ $(/* @__PURE__ */ u({
2126
+ }), [["__scopeId", "data-v-927e0835"]]), Wi = { class: "ui-designer" }, Gi = { class: "contents" }, Ki = "aham-ui-designer-screens-height", qi = /*#__PURE__*/ $(/* @__PURE__ */ u({
2099
2127
  __name: "Designer",
2100
2128
  props: {
2101
2129
  value: {},
@@ -2108,12 +2136,15 @@ var Di = /*#__PURE__*/ $(wi, [["render", Ei], ["__scopeId", "data-v-d42babf5"]])
2108
2136
  "screenRename"
2109
2137
  ],
2110
2138
  setup(e, { emit: t }) {
2111
- let n = e, r = t, i = y(), s = y([]), c = y(), u = y(50), d = !1;
2112
- k(() => n.options?.templates, (e) => {
2113
- s.value = e ? [...e] : [], !c.value && s.value[0] && (c.value = s.value[0].id);
2139
+ let r = e, i = t, s = y(), c = y([]), u = y(), d = y(50), f = !1, p = n(() => r.options?.checklist?.map((e) => ({
2140
+ ...e,
2141
+ complete: e.check ? e.check({ templates: c.value }) : e.complete
2142
+ })));
2143
+ k(() => r.options?.templates, (e) => {
2144
+ c.value = e ? [...e] : [], !u.value && c.value[0] && (u.value = c.value[0].id);
2114
2145
  }, { immediate: !0 });
2115
- function f() {
2116
- let e = s.value.filter((e) => e.icon === "view_column").length, t = `layout-${Date.now()}`, n = {
2146
+ function _() {
2147
+ let e = c.value.filter((e) => e.icon === "view_column").length, t = `layout-${Date.now()}`, n = {
2117
2148
  id: t,
2118
2149
  name: e ? `New Layout ${e + 1}` : "New Layout",
2119
2150
  version: "1",
@@ -2122,71 +2153,71 @@ var Di = /*#__PURE__*/ $(wi, [["render", Ei], ["__scopeId", "data-v-d42babf5"]])
2122
2153
  changed: !0,
2123
2154
  type: "dynamic"
2124
2155
  };
2125
- s.value.push(n), c.value = t, r("screenAdd", n), r("screenSelect", n);
2156
+ c.value.push(n), u.value = t, i("screenAdd", n), i("screenSelect", n);
2126
2157
  }
2127
- function p(e, t) {
2128
- let n = s.value.find((t) => t.id === e);
2129
- n && (n.name = t, r("screenRename", e, t));
2158
+ function b(e, t) {
2159
+ let n = c.value.find((t) => t.id === e);
2160
+ n && (n.name = t, i("screenRename", e, t));
2130
2161
  }
2131
- function _(e) {
2132
- let t = s.value.find((t) => t.id === e);
2133
- t && (c.value = e, r("screenSelect", t));
2162
+ function x(e) {
2163
+ let t = c.value.find((t) => t.id === e);
2164
+ t && (u.value = e, i("screenSelect", t));
2134
2165
  }
2135
- function b(e) {
2136
- r("moreSelect", e);
2166
+ function C(e) {
2167
+ i("moreSelect", e);
2137
2168
  }
2138
- function x() {
2139
- d && (d = !1, document.body.style.removeProperty("cursor"), document.removeEventListener("pointermove", C), document.removeEventListener("pointerup", x));
2169
+ function w() {
2170
+ f && (f = !1, document.body.style.removeProperty("cursor"), document.removeEventListener("pointermove", T), document.removeEventListener("pointerup", w));
2140
2171
  }
2141
- function C(e) {
2142
- let t = i.value?.getBoundingClientRect();
2172
+ function T(e) {
2173
+ let t = s.value?.getBoundingClientRect();
2143
2174
  if (!t) return;
2144
2175
  let n = (e.clientY - t.top) / t.height * 100;
2145
- u.value = Math.min(80, Math.max(20, n));
2176
+ d.value = Math.min(80, Math.max(20, n));
2146
2177
  }
2147
- function w(e) {
2148
- d = !0, document.body.style.cursor = "row-resize", document.addEventListener("pointermove", C), document.addEventListener("pointerup", x), e.currentTarget.setPointerCapture?.(e.pointerId);
2178
+ function E(e) {
2179
+ f = !0, document.body.style.cursor = "row-resize", document.addEventListener("pointermove", T), document.addEventListener("pointerup", w), e.currentTarget.setPointerCapture?.(e.pointerId);
2149
2180
  }
2150
2181
  return g(() => {
2151
- let e = Number(localStorage.getItem(Wi));
2152
- Number.isFinite(e) && (u.value = Math.min(80, Math.max(20, e)));
2153
- }), k(u, (e) => {
2154
- localStorage.setItem(Wi, String(e));
2155
- }), h(x), (t, n) => {
2182
+ let e = Number(localStorage.getItem(Ki));
2183
+ Number.isFinite(e) && (d.value = Math.min(80, Math.max(20, e)));
2184
+ }), k(d, (e) => {
2185
+ localStorage.setItem(Ki, String(e));
2186
+ }), h(w), (t, n) => {
2156
2187
  let r = S("Workspace");
2157
- return v(), a("section", Hi, [l(Ci, {
2188
+ return v(), a("section", Wi, [l(Ci, {
2158
2189
  subject: e.options?.subject ?? "",
2159
2190
  shared: e.options?.shared,
2160
2191
  "theme-changeable": e.options?.theme?.changeable,
2161
2192
  "more-items": e.options?.moreItems,
2162
- onMoreSelect: b
2193
+ onMoreSelect: C
2163
2194
  }, null, 8, [
2164
2195
  "subject",
2165
2196
  "shared",
2166
2197
  "theme-changeable",
2167
2198
  "more-items"
2168
- ]), o("div", Ui, [
2199
+ ]), o("div", Gi, [
2169
2200
  o("aside", null, [o("div", {
2170
2201
  ref_key: "sidebarPanels",
2171
- ref: i,
2202
+ ref: s,
2172
2203
  class: "sidebar-panels",
2173
- style: m({ "--screens-height": `${u.value}%` })
2204
+ style: m({ "--screens-height": `${d.value}%` })
2174
2205
  }, [
2175
- l(Vi, {
2176
- templates: s.value,
2177
- "focused-template-id": c.value,
2178
- onAdd: f,
2179
- onRename: p,
2180
- onSelect: _
2206
+ l(Ui, {
2207
+ templates: c.value,
2208
+ "focused-template-id": u.value,
2209
+ onAdd: _,
2210
+ onRename: b,
2211
+ onSelect: x
2181
2212
  }, null, 8, ["templates", "focused-template-id"]),
2182
2213
  o("button", {
2183
2214
  type: "button",
2184
2215
  class: "panel-resizer",
2185
2216
  "aria-label": "Resize screens and components panels",
2186
- onPointerdown: w
2217
+ onPointerdown: E
2187
2218
  }, [...n[0] ||= [o("span", { "aria-hidden": "true" }, null, -1)]], 32),
2188
2219
  l(oi)
2189
- ], 4), l(ki, { items: e.options?.checklist }, null, 8, ["items"])]),
2220
+ ], 4), l(ji, { items: p.value }, null, 8, ["items"])]),
2190
2221
  l(r, {
2191
2222
  class: "workspace",
2192
2223
  subject: e.options?.subject ?? ""
@@ -2195,15 +2226,12 @@ var Di = /*#__PURE__*/ $(wi, [["render", Ei], ["__scopeId", "data-v-d42babf5"]])
2195
2226
  ])]);
2196
2227
  };
2197
2228
  }
2198
- }), [["__scopeId", "data-v-95006144"]]), Ki = te("checklist", {
2229
+ }), [["__scopeId", "data-v-9c3240d0"]]), Ji = te("checklist", {
2199
2230
  state: () => ({ items: [{
2200
- id: "configure-screen",
2201
- label: "Configure the selected screen",
2202
- complete: !1
2203
- }, {
2204
- id: "preview-screen",
2205
- label: "Preview before saving",
2206
- complete: !1
2231
+ id: "all-screens-completed",
2232
+ label: "All screens completed",
2233
+ complete: !1,
2234
+ check: ({ templates: e }) => e.length > 0 && e.every((e) => !e.changed)
2207
2235
  }] }),
2208
2236
  actions: {
2209
2237
  setComplete(e, t = !0) {
@@ -2216,7 +2244,7 @@ var Di = /*#__PURE__*/ $(wi, [["render", Ei], ["__scopeId", "data-v-d42babf5"]])
2216
2244
  });
2217
2245
  }
2218
2246
  }
2219
- }), qi = te("screens", {
2247
+ }), Yi = te("screens", {
2220
2248
  state: () => ({
2221
2249
  screens: [],
2222
2250
  screen: null
@@ -2251,10 +2279,10 @@ var Di = /*#__PURE__*/ $(wi, [["render", Ei], ["__scopeId", "data-v-d42babf5"]])
2251
2279
  });
2252
2280
  //#endregion
2253
2281
  //#region src/widgets/components/types.ts
2254
- function Ji(e) {
2282
+ function Xi(e) {
2255
2283
  if (e !== void 0 && e !== "") return typeof e == "number" || /^-?\d+(?:\.\d+)?$/.test(String(e)) ? `${e}px` : String(e);
2256
2284
  }
2257
- function Yi(e) {
2285
+ function Zi(e) {
2258
2286
  let t = {};
2259
2287
  for (let n of [
2260
2288
  "width",
@@ -2265,10 +2293,10 @@ function Yi(e) {
2265
2293
  "borderWidth",
2266
2294
  "radius"
2267
2295
  ]) {
2268
- let r = Ji(e[n]);
2296
+ let r = Xi(e[n]);
2269
2297
  r && (t[n === "radius" ? "borderRadius" : n] = r);
2270
2298
  }
2271
- if (e.background && (t.background = e.background), e.layout === "grid" ? (t.display = "grid", t.gridTemplateColumns = e.columns || "1fr 1fr", t.alignItems = e.align || "stretch") : e.layout === "block" ? t.display = "block" : (t.display = "flex", t.flexDirection = e.direction || "column", t.alignItems = e.align || "stretch", t.justifyContent = e.justify || "flex-start"), e.layout !== "block" && e.gap !== void 0 && (t.gap = Ji(e.gap) || "0"), e.borderStyle && e.borderStyle !== "none" && (t.border = `${Ji(e.borderWidth) || "1px"} ${e.borderStyle} ${e.borderColor || "currentColor"}`), e.position) {
2299
+ if (e.background && (t.background = e.background), e.layout === "grid" ? (t.display = "grid", t.gridTemplateColumns = e.columns || "1fr 1fr", t.alignItems = e.align || "stretch") : e.layout === "block" ? t.display = "block" : (t.display = "flex", t.flexDirection = e.direction || "column", t.alignItems = e.align || "stretch", t.justifyContent = e.justify || "flex-start"), e.layout !== "block" && e.gap !== void 0 && (t.gap = Xi(e.gap) || "0"), e.borderStyle && e.borderStyle !== "none" && (t.border = `${Xi(e.borderWidth) || "1px"} ${e.borderStyle} ${e.borderColor || "currentColor"}`), e.position) {
2272
2300
  t.position = e.position;
2273
2301
  for (let n of [
2274
2302
  "left",
@@ -2276,7 +2304,7 @@ function Yi(e) {
2276
2304
  "right",
2277
2305
  "bottom"
2278
2306
  ]) {
2279
- let r = Ji(e[n]);
2307
+ let r = Xi(e[n]);
2280
2308
  r && (t[n] = r);
2281
2309
  }
2282
2310
  }
@@ -2284,7 +2312,7 @@ function Yi(e) {
2284
2312
  }
2285
2313
  //#endregion
2286
2314
  //#region src/widgets/components/Container.vue
2287
- var Xi = /*#__PURE__*/ $(/* @__PURE__ */ u({
2315
+ var Qi = /*#__PURE__*/ $(/* @__PURE__ */ u({
2288
2316
  __name: "Container",
2289
2317
  props: {
2290
2318
  width: {},
@@ -2309,13 +2337,13 @@ var Xi = /*#__PURE__*/ $(/* @__PURE__ */ u({
2309
2337
  bottom: {}
2310
2338
  },
2311
2339
  setup(e) {
2312
- let t = e, r = n(() => Yi(t));
2340
+ let t = e, r = n(() => Zi(t));
2313
2341
  return (e, t) => (v(), a("div", {
2314
2342
  class: "container-component",
2315
2343
  style: m(r.value)
2316
2344
  }, [x(e.$slots, "default", {}, () => [t[0] ||= o("div", { class: "empty" }, "Drop components here", -1)], !0)], 4));
2317
2345
  }
2318
- }), [["__scopeId", "data-v-42c23412"]]), Zi = /*#__PURE__*/ $(/* @__PURE__ */ u({
2346
+ }), [["__scopeId", "data-v-42c23412"]]), $i = /*#__PURE__*/ $(/* @__PURE__ */ u({
2319
2347
  __name: "Card",
2320
2348
  props: {
2321
2349
  shadow: {
@@ -2345,7 +2373,7 @@ var Xi = /*#__PURE__*/ $(/* @__PURE__ */ u({
2345
2373
  },
2346
2374
  setup(e) {
2347
2375
  let t = e, r = n(() => ({
2348
- ...Yi(t),
2376
+ ...Zi(t),
2349
2377
  boxShadow: t.shadow ? "var(--shadow-soft, 0 8px 24px rgb(0 0 0 / 10%))" : "none"
2350
2378
  }));
2351
2379
  return (e, t) => (v(), a("div", {
@@ -2353,7 +2381,7 @@ var Xi = /*#__PURE__*/ $(/* @__PURE__ */ u({
2353
2381
  style: m(r.value)
2354
2382
  }, [x(e.$slots, "default", {}, () => [t[0] ||= o("div", { class: "empty" }, "Drop components here", -1)], !0)], 4));
2355
2383
  }
2356
- }), [["__scopeId", "data-v-b06c1052"]]), Qi = /* @__PURE__ */ u({
2384
+ }), [["__scopeId", "data-v-b06c1052"]]), ea = /* @__PURE__ */ u({
2357
2385
  __name: "Spacer",
2358
2386
  props: { height: { default: 20 } },
2359
2387
  setup(e) {
@@ -2363,13 +2391,13 @@ var Xi = /*#__PURE__*/ $(/* @__PURE__ */ u({
2363
2391
  "aria-hidden": "true"
2364
2392
  }, null, 4));
2365
2393
  }
2366
- }), $i = { class: "divider-component" }, ea = { key: 0 }, ta = /*#__PURE__*/ $(/* @__PURE__ */ u({
2394
+ }), ta = { class: "divider-component" }, na = { key: 0 }, ra = /*#__PURE__*/ $(/* @__PURE__ */ u({
2367
2395
  __name: "Divider",
2368
2396
  props: { label: { default: "or" } },
2369
2397
  setup(e) {
2370
- return (t, n) => (v(), a("div", $i, [e.label ? (v(), a("span", ea, T(e.label), 1)) : i("", !0)]));
2398
+ return (t, n) => (v(), a("div", ta, [e.label ? (v(), a("span", na, T(e.label), 1)) : i("", !0)]));
2371
2399
  }
2372
- }), [["__scopeId", "data-v-a6e861b8"]]), na = /*#__PURE__*/ $(/* @__PURE__ */ u({
2400
+ }), [["__scopeId", "data-v-a6e861b8"]]), ia = /*#__PURE__*/ $(/* @__PURE__ */ u({
2373
2401
  __name: "Layout",
2374
2402
  props: {
2375
2403
  direction: { default: "column" },
@@ -2388,16 +2416,16 @@ var Xi = /*#__PURE__*/ $(/* @__PURE__ */ u({
2388
2416
  style: m(r.value)
2389
2417
  }, [x(e.$slots, "default", {}, () => [t[0] ||= o("div", { class: "empty" }, "Drop components here", -1)], !0)], 4));
2390
2418
  }
2391
- }), [["__scopeId", "data-v-be209bd5"]]), ra = { class: "layout-ref-component" }, ia = { class: "badge" }, aa = { key: 0 }, oa = /*#__PURE__*/ $(/* @__PURE__ */ u({
2419
+ }), [["__scopeId", "data-v-be209bd5"]]), aa = { class: "layout-ref-component" }, oa = { class: "badge" }, sa = { key: 0 }, ca = /*#__PURE__*/ $(/* @__PURE__ */ u({
2392
2420
  __name: "LayoutRef",
2393
2421
  props: {
2394
2422
  layoutKey: { default: "" },
2395
2423
  label: { default: "Layout" }
2396
2424
  },
2397
2425
  setup(e) {
2398
- return (t, n) => (v(), a("div", ra, [o("div", ia, [c("◆ " + T(e.label), 1), e.layoutKey ? (v(), a("span", aa, " · " + T(e.layoutKey), 1)) : i("", !0)]), x(t.$slots, "default", {}, () => [n[0] ||= o("div", { class: "empty" }, "Drop components here", -1)], !0)]));
2426
+ return (t, n) => (v(), a("div", aa, [o("div", oa, [c("◆ " + T(e.label), 1), e.layoutKey ? (v(), a("span", sa, " · " + T(e.layoutKey), 1)) : i("", !0)]), x(t.$slots, "default", {}, () => [n[0] ||= o("div", { class: "empty" }, "Drop components here", -1)], !0)]));
2399
2427
  }
2400
- }), [["__scopeId", "data-v-d41ee6eb"]]), sa = { class: "field-component" }, ca = { class: "label" }, la = { key: 0 }, ua = ["value", "placeholder"], da = /*#__PURE__*/ $(/* @__PURE__ */ u({
2428
+ }), [["__scopeId", "data-v-d41ee6eb"]]), la = { class: "field-component" }, ua = { class: "label" }, da = { key: 0 }, fa = ["value", "placeholder"], pa = /*#__PURE__*/ $(/* @__PURE__ */ u({
2401
2429
  __name: "EmailInput",
2402
2430
  props: {
2403
2431
  label: { default: "Email" },
@@ -2409,14 +2437,14 @@ var Xi = /*#__PURE__*/ $(/* @__PURE__ */ u({
2409
2437
  modelValue: {}
2410
2438
  },
2411
2439
  setup(e) {
2412
- return (t, n) => (v(), a("label", sa, [o("span", ca, [c(T(e.label), 1), e.required ? (v(), a("b", la, "*")) : i("", !0)]), o("input", {
2440
+ return (t, n) => (v(), a("label", la, [o("span", ua, [c(T(e.label), 1), e.required ? (v(), a("b", da, "*")) : i("", !0)]), o("input", {
2413
2441
  value: e.modelValue,
2414
2442
  type: "email",
2415
2443
  placeholder: e.placeholder,
2416
2444
  readonly: ""
2417
- }, null, 8, ua)]));
2445
+ }, null, 8, fa)]));
2418
2446
  }
2419
- }), [["__scopeId", "data-v-c7f2e797"]]), fa = { class: "field-component" }, pa = { class: "label" }, ma = { key: 0 }, ha = ["value", "placeholder"], ga = /*#__PURE__*/ $(/* @__PURE__ */ u({
2447
+ }), [["__scopeId", "data-v-c7f2e797"]]), ma = { class: "field-component" }, ha = { class: "label" }, ga = { key: 0 }, _a = ["value", "placeholder"], va = /*#__PURE__*/ $(/* @__PURE__ */ u({
2420
2448
  __name: "TextInput",
2421
2449
  props: {
2422
2450
  label: { default: "Full name" },
@@ -2428,14 +2456,14 @@ var Xi = /*#__PURE__*/ $(/* @__PURE__ */ u({
2428
2456
  modelValue: {}
2429
2457
  },
2430
2458
  setup(e) {
2431
- return (t, n) => (v(), a("label", fa, [o("span", pa, [c(T(e.label), 1), e.required ? (v(), a("b", ma, "*")) : i("", !0)]), o("input", {
2459
+ return (t, n) => (v(), a("label", ma, [o("span", ha, [c(T(e.label), 1), e.required ? (v(), a("b", ga, "*")) : i("", !0)]), o("input", {
2432
2460
  value: e.modelValue,
2433
2461
  type: "text",
2434
2462
  placeholder: e.placeholder,
2435
2463
  readonly: ""
2436
- }, null, 8, ha)]));
2464
+ }, null, 8, _a)]));
2437
2465
  }
2438
- }), [["__scopeId", "data-v-b5ed7071"]]), _a = { class: "field-component" }, va = { class: "field-row" }, ya = { class: "label" }, ba = { key: 0 }, xa = ["value", "placeholder"], Sa = /*#__PURE__*/ $(/* @__PURE__ */ u({
2466
+ }), [["__scopeId", "data-v-b5ed7071"]]), ya = { class: "field-component" }, ba = { class: "field-row" }, xa = { class: "label" }, Sa = { key: 0 }, Ca = ["value", "placeholder"], wa = /*#__PURE__*/ $(/* @__PURE__ */ u({
2439
2467
  __name: "PasswordInput",
2440
2468
  props: {
2441
2469
  label: { default: "Password" },
@@ -2451,7 +2479,7 @@ var Xi = /*#__PURE__*/ $(/* @__PURE__ */ u({
2451
2479
  modelValue: {}
2452
2480
  },
2453
2481
  setup(e) {
2454
- return (t, n) => (v(), a("label", _a, [o("span", va, [o("span", ya, [c(T(e.label), 1), e.required ? (v(), a("b", ba, "*")) : i("", !0)]), e.showForgot ? (v(), a("a", {
2482
+ return (t, n) => (v(), a("label", ya, [o("span", ba, [o("span", xa, [c(T(e.label), 1), e.required ? (v(), a("b", Sa, "*")) : i("", !0)]), e.showForgot ? (v(), a("a", {
2455
2483
  key: 0,
2456
2484
  href: "#",
2457
2485
  onClick: n[0] ||= N(() => {}, ["prevent"])
@@ -2460,9 +2488,9 @@ var Xi = /*#__PURE__*/ $(/* @__PURE__ */ u({
2460
2488
  type: "password",
2461
2489
  placeholder: e.placeholder,
2462
2490
  readonly: ""
2463
- }, null, 8, xa)]));
2491
+ }, null, 8, Ca)]));
2464
2492
  }
2465
- }), [["__scopeId", "data-v-ad9dff41"]]), Ca = { class: "field-component" }, wa = { class: "label" }, Ta = { class: "otp-row" }, Ea = /*#__PURE__*/ $(/* @__PURE__ */ u({
2493
+ }), [["__scopeId", "data-v-ad9dff41"]]), Ta = { class: "field-component" }, Ea = { class: "label" }, Da = { class: "otp-row" }, Oa = /*#__PURE__*/ $(/* @__PURE__ */ u({
2466
2494
  __name: "OtpInput",
2467
2495
  props: {
2468
2496
  label: { default: "Verification code" },
@@ -2470,12 +2498,12 @@ var Xi = /*#__PURE__*/ $(/* @__PURE__ */ u({
2470
2498
  },
2471
2499
  setup(t) {
2472
2500
  let r = t, i = n(() => Array.from({ length: Math.max(1, r.digits) }));
2473
- return (n, r) => (v(), a("div", Ca, [o("span", wa, T(t.label), 1), o("div", Ta, [(v(!0), a(e, null, b(i.value, (e, t) => (v(), a("span", {
2501
+ return (n, r) => (v(), a("div", Ta, [o("span", Ea, T(t.label), 1), o("div", Da, [(v(!0), a(e, null, b(i.value, (e, t) => (v(), a("span", {
2474
2502
  key: t,
2475
2503
  class: "otp-box"
2476
2504
  }))), 128))])]));
2477
2505
  }
2478
- }), [["__scopeId", "data-v-1914959e"]]), Da = { class: "checkbox-component" }, Oa = ["checked"], ka = /*#__PURE__*/ $(/* @__PURE__ */ u({
2506
+ }), [["__scopeId", "data-v-1914959e"]]), ka = { class: "checkbox-component" }, Aa = ["checked"], ja = /*#__PURE__*/ $(/* @__PURE__ */ u({
2479
2507
  __name: "Checkbox",
2480
2508
  props: {
2481
2509
  label: { default: "Remember me" },
@@ -2486,13 +2514,13 @@ var Xi = /*#__PURE__*/ $(/* @__PURE__ */ u({
2486
2514
  modelValue: { type: Boolean }
2487
2515
  },
2488
2516
  setup(e) {
2489
- return (t, n) => (v(), a("label", Da, [o("input", {
2517
+ return (t, n) => (v(), a("label", ka, [o("input", {
2490
2518
  type: "checkbox",
2491
2519
  checked: e.modelValue ?? e.checked,
2492
2520
  readonly: ""
2493
- }, null, 8, Oa), o("span", null, T(e.label), 1)]));
2521
+ }, null, 8, Aa), o("span", null, T(e.label), 1)]));
2494
2522
  }
2495
- }), [["__scopeId", "data-v-3d492d6d"]]), Aa = /*#__PURE__*/ $(/* @__PURE__ */ u({
2523
+ }), [["__scopeId", "data-v-3d492d6d"]]), Ma = /*#__PURE__*/ $(/* @__PURE__ */ u({
2496
2524
  __name: "SubmitButton",
2497
2525
  props: {
2498
2526
  text: { default: "Sign in" },
@@ -2504,10 +2532,10 @@ var Xi = /*#__PURE__*/ $(/* @__PURE__ */ u({
2504
2532
  class: p(["submit-button", e.style])
2505
2533
  }, T(e.text), 3));
2506
2534
  }
2507
- }), [["__scopeId", "data-v-9807299a"]]), ja = {
2535
+ }), [["__scopeId", "data-v-9807299a"]]), Na = {
2508
2536
  type: "button",
2509
2537
  class: "social-button"
2510
- }, Ma = /*#__PURE__*/ $(/* @__PURE__ */ u({
2538
+ }, Pa = /*#__PURE__*/ $(/* @__PURE__ */ u({
2511
2539
  __name: "SocialButton",
2512
2540
  props: {
2513
2541
  provider: { default: "google" },
@@ -2532,16 +2560,16 @@ var Xi = /*#__PURE__*/ $(/* @__PURE__ */ u({
2532
2560
  color: "#111"
2533
2561
  }
2534
2562
  }, i = n(() => r[t.provider]);
2535
- return (t, n) => (v(), a("button", ja, [o("span", {
2563
+ return (t, n) => (v(), a("button", Na, [o("span", {
2536
2564
  class: "social-icon",
2537
2565
  style: m({ background: i.value.color })
2538
2566
  }, T(i.value.letter), 5), c(T(e.text), 1)]));
2539
2567
  }
2540
- }), [["__scopeId", "data-v-3045616f"]]), Na = [
2568
+ }), [["__scopeId", "data-v-3045616f"]]), Fa = [
2541
2569
  "href",
2542
2570
  "target",
2543
2571
  "rel"
2544
- ], Pa = /*#__PURE__*/ $(/* @__PURE__ */ u({
2572
+ ], Ia = /*#__PURE__*/ $(/* @__PURE__ */ u({
2545
2573
  __name: "TextLink",
2546
2574
  props: {
2547
2575
  text: { default: "Forgot password?" },
@@ -2554,9 +2582,9 @@ var Xi = /*#__PURE__*/ $(/* @__PURE__ */ u({
2554
2582
  href: e.href,
2555
2583
  target: e.target,
2556
2584
  rel: e.target === "_blank" ? "noopener noreferrer" : void 0
2557
- }, T(e.text), 9, Na));
2585
+ }, T(e.text), 9, Fa));
2558
2586
  }
2559
- }), [["__scopeId", "data-v-8d18edb1"]]), Fa = /*#__PURE__*/ $(/* @__PURE__ */ u({
2587
+ }), [["__scopeId", "data-v-8d18edb1"]]), La = /*#__PURE__*/ $(/* @__PURE__ */ u({
2560
2588
  __name: "Heading",
2561
2589
  props: {
2562
2590
  text: { default: "Welcome back" },
@@ -2569,17 +2597,17 @@ var Xi = /*#__PURE__*/ $(/* @__PURE__ */ u({
2569
2597
  _: 1
2570
2598
  }, 8, ["class"]));
2571
2599
  }
2572
- }), [["__scopeId", "data-v-1c78b10f"]]), Ia = { class: "text-component" }, La = /*#__PURE__*/ $(/* @__PURE__ */ u({
2600
+ }), [["__scopeId", "data-v-1c78b10f"]]), Ra = { class: "text-component" }, za = /*#__PURE__*/ $(/* @__PURE__ */ u({
2573
2601
  __name: "Text",
2574
2602
  props: { text: { default: "Enter your details to continue." } },
2575
2603
  setup(e) {
2576
- return (t, n) => (v(), a("p", Ia, T(e.text), 1));
2604
+ return (t, n) => (v(), a("p", Ra, T(e.text), 1));
2577
2605
  }
2578
- }), [["__scopeId", "data-v-3be0c0c9"]]), Ra = [
2606
+ }), [["__scopeId", "data-v-3be0c0c9"]]), Ba = [
2579
2607
  "href",
2580
2608
  "target",
2581
2609
  "rel"
2582
- ], za = ["src", "alt"], Ba = { key: 1 }, Va = ["src", "alt"], Ha = { key: 1 }, Ua = /*#__PURE__*/ $(/* @__PURE__ */ u({
2610
+ ], Va = ["src", "alt"], Ha = { key: 1 }, Ua = ["src", "alt"], Wa = { key: 1 }, Ga = /*#__PURE__*/ $(/* @__PURE__ */ u({
2583
2611
  __name: "Image",
2584
2612
  props: {
2585
2613
  src: { default: "" },
@@ -2610,7 +2638,7 @@ var Xi = /*#__PURE__*/ $(/* @__PURE__ */ u({
2610
2638
  key: 0,
2611
2639
  src: e.src,
2612
2640
  alt: e.alt
2613
- }, null, 8, za)) : (v(), a("span", Ba, T(e.alt), 1))], 4)], 8, Ra)) : (v(), a("div", {
2641
+ }, null, 8, Va)) : (v(), a("span", Ha, T(e.alt), 1))], 4)], 8, Ba)) : (v(), a("div", {
2614
2642
  key: 1,
2615
2643
  class: "image-component",
2616
2644
  style: m(i.value)
@@ -2618,36 +2646,36 @@ var Xi = /*#__PURE__*/ $(/* @__PURE__ */ u({
2618
2646
  key: 0,
2619
2647
  src: e.src,
2620
2648
  alt: e.alt
2621
- }, null, 8, Va)) : (v(), a("span", Ha, T(e.alt), 1))], 4));
2649
+ }, null, 8, Ua)) : (v(), a("span", Wa, T(e.alt), 1))], 4));
2622
2650
  }
2623
- }), [["__scopeId", "data-v-ecc98881"]]), Wa = { "aria-hidden": "true" }, Ga = /*#__PURE__*/ $(/* @__PURE__ */ u({
2651
+ }), [["__scopeId", "data-v-ecc98881"]]), Ka = { "aria-hidden": "true" }, qa = /*#__PURE__*/ $(/* @__PURE__ */ u({
2624
2652
  __name: "Alert",
2625
2653
  props: {
2626
2654
  tone: { default: "info" },
2627
2655
  text: { default: "Check your inbox for the reset link." }
2628
2656
  },
2629
2657
  setup(e) {
2630
- return (t, n) => (v(), a("div", { class: p(["alert-component", e.tone]) }, [o("span", Wa, T(e.tone === "error" ? "⚠" : e.tone === "success" ? "✓" : "ⓘ"), 1), o("span", null, T(e.text), 1)], 2));
2658
+ return (t, n) => (v(), a("div", { class: p(["alert-component", e.tone]) }, [o("span", Ka, T(e.tone === "error" ? "⚠" : e.tone === "success" ? "✓" : "ⓘ"), 1), o("span", null, T(e.text), 1)], 2));
2631
2659
  }
2632
- }), [["__scopeId", "data-v-bf171873"]]), Ka = { class: "content-component" }, qa = { class: "empty" }, Ja = /*#__PURE__*/ $(/* @__PURE__ */ u({
2660
+ }), [["__scopeId", "data-v-bf171873"]]), Ja = { class: "content-component" }, Ya = { class: "empty" }, Xa = /*#__PURE__*/ $(/* @__PURE__ */ u({
2633
2661
  __name: "Content",
2634
2662
  props: { note: { default: "Page content goes here" } },
2635
2663
  setup(e) {
2636
- return (t, n) => (v(), a("div", Ka, [x(t.$slots, "default", {}, () => [o("div", qa, T(e.note), 1)], !0)]));
2664
+ return (t, n) => (v(), a("div", Ja, [x(t.$slots, "default", {}, () => [o("div", Ya, T(e.note), 1)], !0)]));
2637
2665
  }
2638
- }), [["__scopeId", "data-v-1c551f9d"]]), Ya = { class: "consent-card" }, Xa = /*#__PURE__*/ $(/* @__PURE__ */ u({
2666
+ }), [["__scopeId", "data-v-1c551f9d"]]), Za = { class: "consent-card" }, Qa = /*#__PURE__*/ $(/* @__PURE__ */ u({
2639
2667
  __name: "ConsentCard",
2640
2668
  props: {
2641
2669
  appName: { default: "Acme Analytics" },
2642
2670
  requestedBy: { default: "acme.io" }
2643
2671
  },
2644
2672
  setup(e) {
2645
- return (t, n) => (v(), a("div", Ya, [n[0] ||= o("span", {
2673
+ return (t, n) => (v(), a("div", Za, [n[0] ||= o("span", {
2646
2674
  class: "icon",
2647
2675
  "aria-hidden": "true"
2648
2676
  }, "✓", -1), o("div", null, [o("strong", null, T(e.appName), 1), o("span", null, "wants to access your account · " + T(e.requestedBy), 1)])]));
2649
2677
  }
2650
- }), [["__scopeId", "data-v-9008f821"]]), Za = { class: "scope-list" }, Qa = /*#__PURE__*/ $(/* @__PURE__ */ u({
2678
+ }), [["__scopeId", "data-v-9008f821"]]), $a = { class: "scope-list" }, eo = /*#__PURE__*/ $(/* @__PURE__ */ u({
2651
2679
  __name: "ScopeList",
2652
2680
  props: { scopes: { default: () => [
2653
2681
  "Read your profile",
@@ -2656,11 +2684,11 @@ var Xi = /*#__PURE__*/ $(/* @__PURE__ */ u({
2656
2684
  ] } },
2657
2685
  setup(t) {
2658
2686
  let r = t, i = n(() => Array.isArray(r.scopes) ? r.scopes : r.scopes.split("\n").filter(Boolean));
2659
- return (t, n) => (v(), a("div", Za, [(v(!0), a(e, null, b(i.value, (e) => (v(), a("div", {
2687
+ return (t, n) => (v(), a("div", $a, [(v(!0), a(e, null, b(i.value, (e) => (v(), a("div", {
2660
2688
  key: e,
2661
2689
  class: "scope"
2662
2690
  }, [n[0] ||= o("span", { "aria-hidden": "true" }, "✓", -1), o("span", null, T(e), 1)]))), 128))]));
2663
2691
  }
2664
2692
  }), [["__scopeId", "data-v-cdebac9d"]]);
2665
2693
  //#endregion
2666
- export { Ga as Alert, Zi as Card, ka as Checkbox, Xa as ConsentCard, Xi as Container, Ja as Content, Gi as Designer, ta as Divider, da as EmailInput, Fa as Heading, Ua as Image, na as Layout, oa as LayoutRef, Ea as OtpInput, Sa as PasswordInput, Qa as ScopeList, Ma as SocialButton, Qi as Spacer, Aa as SubmitButton, La as Text, ga as TextInput, Pa as TextLink, Yr as TextScroller, Ki as useChecklistStore, qi as useScreensStore };
2694
+ export { qa as Alert, $i as Card, ja as Checkbox, Qa as ConsentCard, Qi as Container, Xa as Content, qi as Designer, ra as Divider, pa as EmailInput, La as Heading, Ga as Image, ia as Layout, ca as LayoutRef, Oa as OtpInput, wa as PasswordInput, eo as ScopeList, Pa as SocialButton, ea as Spacer, Ma as SubmitButton, za as Text, va as TextInput, Ia as TextLink, Yr as TextScroller, Ji as useChecklistStore, Yi as useScreensStore };
@@ -2,8 +2,6 @@ import type { ChecklistItem } from './header/types';
2
2
  type __VLS_Props = {
3
3
  items?: ChecklistItem[];
4
4
  };
5
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
6
- items: ChecklistItem[];
7
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
5
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
8
6
  declare const _default: typeof __VLS_export;
9
7
  export default _default;
@@ -17,4 +17,8 @@ export interface ChecklistItem {
17
17
  id: string;
18
18
  label: string;
19
19
  complete: boolean;
20
+ check?: (context: ChecklistContext) => boolean;
21
+ }
22
+ export interface ChecklistContext {
23
+ templates: readonly Template[];
20
24
  }
package/package.json CHANGED
@@ -1,21 +1,21 @@
1
1
  {
2
2
  "name": "@aham.ro/ui-designer",
3
- "version": "0.1.5",
3
+ "version": "0.1.8",
4
4
  "description": "Vue components for the UI designer for IAM and email templates.",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist"
8
8
  ],
9
- "main": "./dist/iam-designer.js",
10
- "module": "./dist/iam-designer.js",
9
+ "main": "./dist/ui-designer.js",
10
+ "module": "./dist/ui-designer.js",
11
11
  "types": "./dist/index.d.ts",
12
12
  "exports": {
13
13
  ".": {
14
14
  "types": "./dist/index.d.ts",
15
- "import": "./dist/iam-designer.js"
15
+ "import": "./dist/ui-designer.js"
16
16
  },
17
- "./style.css": "./dist/iam-designer.css",
18
- "./designer.css": "./dist/iam-designer.css"
17
+ "./style.css": "./dist/ui-designer.css",
18
+ "./designer.css": "./dist/ui-designer.css"
19
19
  },
20
20
  "scripts": {
21
21
  "dev": "vite",
@@ -1,2 +0,0 @@
1
- @import "https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,0..200";.iam-designer{--designer-panel:var(--color-panel,#fff);--designer-panel-raised:var(--color-panel-raised,#f5f2ee);--designer-text:var(--color-text,#111);--designer-muted:var(--color-text-muted,#6b7280);--designer-border:var(--color-border,#ece9e4);--designer-shell:var(--color-background,#fafaf9);--designer-primary:var(--color-primary,#2563eb);--designer-space-xs:var(--space-xs,6px);--designer-space-sm:var(--space-sm,10px);--designer-space-md:var(--space-md,14px);--designer-font-xs:var(--font-xs,11px);--designer-font-sm:var(--font-sm,12.5px);--designer-font-lg:var(--font-lg,19px)}.iam-designer [data-overlayscrollbars]{--os-size:6px;--os-padding-perpendicular:2px;--os-track-border-radius:4px;--os-handle-border-radius:4px;--os-handle-bg:color-mix(in srgb, var(--designer-muted) 35%, transparent);--os-handle-bg-hover:var(--designer-muted);--os-handle-bg-active:var(--designer-primary)}.iam-designer [data-overlayscrollbars]>.os-scrollbar-horizontal{display:none}.text-scroller[data-v-8fac895b]{white-space:nowrap;min-width:0;display:block;overflow:hidden}.text-scroller-content[data-v-8fac895b]{text-overflow:ellipsis;vertical-align:top;min-width:100%;display:inline-block;overflow:hidden}.text-scroller.scrolling .text-scroller-content[data-v-8fac895b]{animation:text-scroller-loop-8fac895b var(--scroll-duration) linear;text-overflow:clip}@keyframes text-scroller-loop-8fac895b{0%,15%{transform:translate(0)}85%,to{transform:translateX(calc(-1 * var(--scroll-distance)))}}.component-list[data-v-29d47f96]{border-top:1px solid var(--designer-border);flex-direction:column;width:100%;min-width:0;min-height:0;display:flex;overflow:hidden}.component-head[data-v-29d47f96]{padding:12px var(--designer-space-sm) 8px;color:var(--designer-muted);font-size:var(--designer-font-xs);letter-spacing:.08em;text-transform:uppercase;flex:none}.component-content[data-v-29d47f96]{box-sizing:border-box;flex:auto;width:100%;min-width:0;height:0;min-height:0;padding:0 0 12px}.palette-search[data-v-29d47f96]{border:1px solid var(--designer-border);background:var(--designer-shell);color:var(--designer-muted);border-radius:7px;flex:none;align-items:center;gap:7px;margin:0 10px 10px;padding:7px 8px;display:flex}.palette-search input[data-v-29d47f96]{width:100%;min-width:0;color:var(--designer-text);font:inherit;font-size:var(--designer-font-sm);background:0 0;border:0;outline:0}.component-group+.component-group[data-v-29d47f96]{margin-top:14px}.component-groups[data-v-29d47f96]{box-sizing:border-box;width:100%;min-width:0;padding:0 10px}.component-content[data-v-29d47f96] [data-overlayscrollbars-contents]{box-sizing:border-box;width:100%;min-width:0}.component-content[data-v-29d47f96] [data-overlayscrollbars-viewport]{height:100%!important;overflow-y:scroll!important}.group-label[data-v-29d47f96]{color:var(--designer-muted);font-size:var(--designer-font-xs);letter-spacing:.08em;text-transform:uppercase;padding:0 4px 6px}.component-items[data-v-29d47f96]{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:5px;display:grid}.component-item[data-v-29d47f96]{border:1px solid var(--designer-border);background:var(--designer-panel);min-width:0;color:var(--designer-text);font:inherit;font-size:var(--designer-font-xs);text-align:left;cursor:pointer;border-radius:8px;flex-direction:column;align-items:flex-start;gap:5px;padding:7px;line-height:1.2;display:flex}.component-item[data-v-29d47f96]:hover{border-color:color-mix(in srgb, var(--designer-primary) 35%, var(--designer-border));background:var(--designer-panel-raised);transform:translateY(-1px)}.component-icon[data-v-29d47f96]{background:var(--designer-panel-raised);width:20px;height:20px;color:var(--designer-muted);border-radius:6px;justify-content:center;align-items:center;font-size:14px;display:inline-flex}.component-item:hover .component-icon[data-v-29d47f96]{color:var(--designer-primary)}.component-label[data-v-29d47f96]{width:100%;max-width:100%}.component-empty[data-v-29d47f96]{color:var(--designer-muted);font-size:var(--designer-font-xs);text-align:center;grid-column:1/-1;padding:10px 4px}[data-overlayscrollbars].component-content[data-v-29d47f96]{flex:auto;height:0;min-height:0}.icon-button[data-v-b3b6390f]{border:1px solid var(--color-border,#ece9e4);border-radius:var(--radius-sm,10px);background-color:var(--color-panel,#fff);width:34px;height:34px;color:var(--color-text-muted,#6b7280);font:inherit;cursor:pointer;justify-content:center;align-items:center;padding:0;line-height:1;transition:color .15s,border-color .15s,background-color .15s;display:inline-flex}.icon-button[data-v-b3b6390f]:hover:not(:disabled){color:var(--color-primary,#2563eb);border-color:var(--color-primary,#2563eb);background-color:var(--color-panel-raised,#f5f2ee)}.icon-button[data-v-b3b6390f]:disabled{opacity:.5;cursor:not-allowed}.more-menu[data-v-923fea1e]{position:relative}.more-button[data-v-923fea1e]{border-radius:var(--radius-xs,6px);background-color:var(--color-panel,#fff);width:32px;height:32px;color:var(--color-text,#111);font:inherit;cursor:pointer;border:none;justify-content:center;align-items:center;margin:0;padding:0;line-height:1;display:inline-flex}.more-button[aria-expanded=true][data-v-923fea1e]{background-color:var(--color-panel-raised,#f5f2ee)}.dropdown[data-v-923fea1e]{z-index:1000;border:1px solid var(--designer-border,#ece9e4);border-radius:var(--radius-sm,10px);background:var(--designer-panel,#fff);min-width:180px;color:var(--designer-text,#111);font-family:var(--font-base-family,system-ui, sans-serif);padding:4px;position:fixed;box-shadow:0 8px 24px #0000001f}.dropdown .icon[data-v-923fea1e]{letter-spacing:normal;text-transform:none;white-space:nowrap;-webkit-font-feature-settings:"liga";-webkit-font-smoothing:antialiased;font-feature-settings:"liga";font-variation-settings:"FILL" 0, "wght" 400, "GRAD" 0, "opsz" 24;direction:ltr;font-family:Material Symbols Outlined;font-size:20px;font-style:normal;font-weight:400;line-height:1}.menu-item[data-v-923fea1e]{align-items:center;gap:var(--designer-space-sm,10px);border-radius:var(--radius-xs,6px);width:100%;color:var(--designer-text,#111);font:inherit;font-size:var(--designer-font-sm,12.5px);text-align:left;cursor:pointer;background:0 0;border:0;padding:8px 10px;display:flex}.menu-item[data-v-923fea1e]:hover:not(:disabled){background:var(--designer-panel-raised,#f5f2ee)}.menu-item[data-v-923fea1e]:disabled{opacity:.5;cursor:not-allowed}.save-button[data-v-4a359870]{justify-content:center;align-items:center;gap:var(--space-xs,6px);min-height:32px;padding:6px var(--space-sm,10px);border:1px solid var(--color-primary,#2563eb);border-radius:var(--radius-sm,10px);background-color:var(--color-primary,#2563eb);color:var(--color-on-primary,#fff);font:inherit;font-size:var(--font-sm,12.5px);cursor:pointer;font-weight:500;display:inline-flex}.save-button[data-v-4a359870]:disabled{opacity:.6;cursor:not-allowed}.save-button[data-v-4a359870]:hover{background-color:var(--color-primary-hover,#1d4ed8);border-color:var(--color-primary-hover,#1d4ed8)}.spinner[data-v-4a359870]{border:1px solid;border-right-color:#0000;border-radius:50%;width:14px;height:14px;animation:.75s linear infinite save-button-spin-4a359870}@keyframes save-button-spin-4a359870{to{transform:rotate(360deg)}}header[data-v-b6ce5e30]{box-sizing:border-box;width:100%;height:60px;color:var(--designer-text);border-bottom:1px solid var(--designer-border);font-family:var(--font-base-family,inherit);align-items:center;display:flex}.branding[data-v-b6ce5e30]{height:100%;padding:0 var(--designer-space-md);align-items:center;min-width:0;display:flex}.branding .icon[data-v-b6ce5e30]{margin-right:var(--designer-space-xs);font-size:24px}.branding .title[data-v-b6ce5e30]{text-overflow:ellipsis;white-space:nowrap;max-width:min(60vw,620px);font-weight:500;font-size:var(--designer-font-lg);overflow:hidden}.subject[data-v-b6ce5e30]{align-items:center;gap:var(--designer-space-sm);min-width:0;height:100%;display:flex}.subject .document-name[data-v-b6ce5e30]{text-overflow:ellipsis;white-space:nowrap;max-width:min(35vw,360px);font-size:var(--designer-font-xs);background-color:var(--color-surface-disabled,color-mix(in srgb, var(--designer-text) 4%, var(--designer-panel)));border-radius:var(--radius-xs,6px);color:var(--color-info,var(--designer-primary));padding:4px 8px;font-weight:500;overflow:hidden}.subject .shared[data-v-b6ce5e30]{color:var(--designer-muted);font-size:var(--designer-font-md);cursor:default}.actions[data-v-b6ce5e30]{height:100%;padding:0 var(--designer-space-md);justify-content:flex-end;align-items:center;gap:var(--designer-space-sm);flex:1;display:flex}.icon[data-v-b6ce5e30]{white-space:nowrap;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;line-height:1;display:inline-flex}@media (width<=720px){.subject[data-v-b6ce5e30]{display:none}.actions[data-v-b6ce5e30]{padding-right:var(--designer-space-sm)}}.properties-panel[data-v-d42babf5]{min-height:0;color:var(--designer-text);flex-direction:column;display:flex}.properties-head[data-v-d42babf5]{min-height:52px;padding:0 var(--designer-space-md);border-bottom:1px solid var(--designer-border);font-size:var(--designer-font-sm);align-items:center;gap:8px;display:flex}.property-icon[data-v-d42babf5]{color:var(--designer-primary);font-size:16px}.properties-empty[data-v-d42babf5]{padding:22px var(--designer-space-md);color:var(--designer-muted);font-size:var(--designer-font-sm);line-height:1.5}.layers[data-v-d42babf5]{padding:12px var(--designer-space-md);border-top:1px solid var(--designer-border);margin-top:auto}.layers-title[data-v-d42babf5]{color:var(--designer-muted);font-size:var(--designer-font-xs);letter-spacing:.08em;text-transform:uppercase;margin-bottom:8px}.layer-empty[data-v-d42babf5]{color:var(--designer-muted);font-size:var(--designer-font-sm)}.side-info[data-v-f439ecfe]{border-top:1px solid var(--designer-border);height:auto;color:var(--designer-muted);font-size:var(--designer-font-sm);flex:none;padding:12px 14px 16px}.info-title[data-v-f439ecfe]{color:var(--designer-muted);font-size:var(--designer-font-xs);letter-spacing:.08em;text-transform:uppercase;margin-bottom:8px}.info-row[data-v-f439ecfe]{align-items:flex-start;gap:8px;line-height:1.4;display:flex}.info-row+.info-row[data-v-f439ecfe]{margin-top:7px}.info-dot[data-v-f439ecfe]{background:var(--color-accent-3,#c9973f);border-radius:50%;flex:none;width:7px;height:7px;margin-top:4px}.info-dot.complete[data-v-f439ecfe]{background:var(--color-success,#5aab72)}.template-list[data-v-927e0835]{box-sizing:border-box;border-bottom:1px solid var(--designer-border);width:100%;min-width:0;min-height:0;padding:12px 0 10px;overflow:hidden}.section-head[data-v-927e0835]{padding:0 var(--designer-space-sm) 8px;color:var(--designer-muted);font-size:var(--designer-font-xs);letter-spacing:.08em;text-transform:uppercase;justify-content:space-between;align-items:center;display:flex}.section-head button[data-v-927e0835]{border:1px solid var(--designer-border);background:var(--designer-panel);width:19px;height:19px;color:var(--designer-muted);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}.section-head button span[data-v-927e0835]{line-height:1;display:block;transform:translateY(-1px)}.template-tabs[data-v-927e0835]{flex-direction:column;flex:auto;width:100%;min-width:0;height:0;min-height:0;display:flex;overflow:hidden}.template-tab[data-v-927e0835]{box-sizing:border-box;width:calc(100% - 13px);min-width:0;color:var(--designer-muted);font:inherit;font-size:var(--designer-font-sm);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;gap:7px;margin:0 6px 3px;padding:10px 9px;display:flex}.template-tab[data-v-927e0835]:last-of-type{margin-bottom:0}.template-tab[data-v-927e0835]:hover,.template-tab.active[data-v-927e0835]{background:var(--designer-panel-raised);color:var(--designer-primary)}.tab-icon[data-v-927e0835]{width:14px;height:14px;color:var(--designer-muted);flex:none;font-size:14px}.tab-label[data-v-927e0835]{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.tab-label-input[data-v-927e0835]{box-sizing:border-box;border:1px solid var(--designer-border);background:var(--designer-shell);width:100%;color:var(--designer-text);font:inherit;border-radius:3px;outline:0;padding:1px 3px}.tab-channel[data-v-927e0835]{border:1px solid var(--designer-border);background:var(--designer-panel);color:var(--designer-muted);text-transform:uppercase;border-radius:4px;flex:none;padding:1px 4px;font-size:9px;line-height:1.1}.tab-version[data-v-927e0835]{color:var(--designer-muted);font-size:var(--designer-font-xs)}.tab-changed[data-v-927e0835]{background:var(--color-warning,#c9973f);border-radius:50%;flex:none;width:5px;height:5px;transform:translateY(1px)}.empty-list[data-v-927e0835]{color:var(--designer-muted);font-size:var(--designer-font-sm);margin:0;padding:10px 15px}[data-overlayscrollbars].template-tabs[data-v-927e0835]{flex:auto;width:100%;height:0;min-height:0}.template-tabs[data-v-927e0835] [data-overlayscrollbars-viewport]{height:100%!important;overflow-y:scroll!important}.template-tabs[data-v-927e0835] [data-overlayscrollbars-contents]{box-sizing:border-box;width:100%;min-width:0;padding:0 6px 8px 0}section[data-v-95006144]{box-sizing:border-box;flex-direction:column;height:100%;min-height:0;max-height:100vh;display:flex;position:relative;overflow:hidden}.contents[data-v-95006144]{box-sizing:border-box;flex:auto;height:auto;min-height:0;max-height:none;display:flex;overflow:hidden}.contents aside[data-v-95006144]{border-right:1px solid var(--designer-border);flex-direction:column;flex:0 0 200px;width:200px;min-height:0;max-height:100%;display:flex;overflow:hidden}.contents .sidebar-panels[data-v-95006144]{grid-template-rows:var(--screens-height) 9px minmax(0, calc(100% - var(--screens-height) - 9px));flex:1;min-height:0;display:grid}.contents .sidebar-panels>[data-v-95006144]{min-height:0}.contents .panel-resizer[data-v-95006144]{border:0;border-top:1px solid color-mix(in srgb, var(--designer-border) 55%, transparent);border-bottom:1px solid color-mix(in srgb, var(--designer-border) 55%, transparent);cursor:row-resize;background:0 0;justify-content:center;align-items:center;width:100%;padding:0;display:flex}.contents .panel-resizer span[data-v-95006144]{background:var(--designer-border);border-radius:3px;width:28px;height:3px}.contents .panel-resizer:hover span[data-v-95006144]{background:var(--designer-primary)}.contents .workspace[data-v-95006144]{flex:1;min-width:0;max-height:100%}.contents .properties[data-v-95006144]{border-left:1px solid var(--designer-border);flex:0 0 240px;width:240px;min-height:0;max-height:100%;overflow:auto}.container-component[data-v-42c23412]{box-sizing:border-box;min-width:0;color:var(--designer-text,#111)}.empty[data-v-42c23412]{border:1px dashed var(--designer-border,#d9d5cf);min-height:24px;color:var(--designer-muted,#6b7280);text-align:center;padding:12px}.card-component[data-v-b06c1052]{box-sizing:border-box;min-width:0;color:var(--designer-text,#111);background:var(--designer-panel,#fff)}.empty[data-v-b06c1052]{border:1px dashed var(--designer-border,#d9d5cf);min-height:24px;color:var(--designer-muted,#6b7280);text-align:center;padding:12px}.divider-component[data-v-a6e861b8]{width:100%;color:var(--designer-muted,#6b7280);align-items:center;gap:10px;font-size:.8em;display:flex}.divider-component[data-v-a6e861b8]:before,.divider-component[data-v-a6e861b8]:after{background:var(--designer-border,#e5e7eb);content:"";flex:1;height:1px}.layout-component[data-v-be209bd5]{min-width:0}.empty[data-v-be209bd5]{border:1px dashed var(--designer-border,#d9d5cf);color:var(--designer-muted,#6b7280);text-align:center;padding:12px}.layout-ref-component[data-v-d41ee6eb]{min-width:0;padding-top:22px;position:relative}.badge[data-v-d41ee6eb]{color:var(--designer-primary,#2563eb);font-size:.72em;position:absolute;top:0;left:0}.empty[data-v-d41ee6eb]{border:1px dashed var(--designer-border,#d9d5cf);color:var(--designer-muted,#6b7280);text-align:center;padding:12px}.field-component[data-v-c7f2e797]{color:var(--designer-text,#111);gap:6px;display:grid}.label[data-v-c7f2e797]{font-size:.85em;font-weight:600}.label b[data-v-c7f2e797]{color:#dc2626;margin-left:2px}input[data-v-c7f2e797]{box-sizing:border-box;border:1px solid var(--designer-border,#d9d5cf);background:var(--designer-panel,#fff);width:100%;color:inherit;font:inherit;border-radius:7px;padding:9px 10px}.field-component[data-v-b5ed7071]{color:var(--designer-text,#111);gap:6px;display:grid}.label[data-v-b5ed7071]{font-size:.85em;font-weight:600}.label b[data-v-b5ed7071]{color:#dc2626;margin-left:2px}input[data-v-b5ed7071]{box-sizing:border-box;border:1px solid var(--designer-border,#d9d5cf);background:var(--designer-panel,#fff);width:100%;color:inherit;font:inherit;border-radius:7px;padding:9px 10px}.field-component[data-v-ad9dff41]{color:var(--designer-text,#111);gap:6px;display:grid}.label[data-v-ad9dff41]{font-size:.85em;font-weight:600}.label b[data-v-ad9dff41]{color:#dc2626;margin-left:2px}.field-row[data-v-ad9dff41]{justify-content:space-between;gap:8px;display:flex}.field-row a[data-v-ad9dff41]{color:var(--designer-primary,#2563eb);font-size:.85em}input[data-v-ad9dff41]{box-sizing:border-box;border:1px solid var(--designer-border,#d9d5cf);background:var(--designer-panel,#fff);width:100%;color:inherit;font:inherit;border-radius:7px;padding:9px 10px}.field-component[data-v-1914959e]{color:var(--designer-text,#111);gap:6px;display:grid}.label[data-v-1914959e]{font-size:.85em;font-weight:600}.otp-row[data-v-1914959e]{gap:6px;display:flex}.otp-box[data-v-1914959e]{border:1px solid var(--designer-border,#d9d5cf);background:var(--designer-panel,#fff);border-radius:6px;width:2em;height:2.3em}.checkbox-component[data-v-3d492d6d]{color:var(--designer-text,#111);cursor:default;align-items:center;gap:8px;display:inline-flex}.checkbox-component input[data-v-3d492d6d]{accent-color:var(--designer-primary,#2563eb)}.submit-button[data-v-9807299a]{width:100%;font:inherit;cursor:pointer;border:0;border-radius:7px;padding:10px 14px}.primary[data-v-9807299a]{background:var(--designer-primary,#2563eb);color:#fff}.secondary[data-v-9807299a]{border:1px solid var(--designer-border,#d9d5cf);color:inherit;background:0 0}.social-button[data-v-3045616f]{border:1px solid var(--designer-border,#d9d5cf);background:var(--designer-panel,#fff);width:100%;color:inherit;font:inherit;cursor:pointer;border-radius:7px;justify-content:center;align-items:center;gap:9px;padding:9px 14px;display:flex}.social-icon[data-v-3045616f]{color:#fff;border-radius:4px;place-items:center;width:20px;height:20px;font-size:12px;font-weight:700;display:inline-grid}.text-link[data-v-8d18edb1]{color:var(--designer-primary,#2563eb);text-decoration:none}.text-link[data-v-8d18edb1]:hover{text-decoration:underline}.heading-component[data-v-1c78b10f]{color:var(--designer-text,#111);margin:0}.sm[data-v-1c78b10f]{font-size:1em}.md[data-v-1c78b10f]{font-size:1.2em}.lg[data-v-1c78b10f]{font-size:1.5em}.xl[data-v-1c78b10f]{font-size:1.9em}.text-component[data-v-3be0c0c9]{color:var(--designer-muted,#6b7280);white-space:pre-wrap;margin:0;line-height:1.5}.image-link[data-v-ecc98881]{max-width:100%;text-decoration:none;display:inline-block}.image-component[data-v-ecc98881]{box-sizing:border-box;background:var(--designer-panel-raised,#f5f2ee);min-height:20px;color:var(--designer-muted,#6b7280);place-items:center;display:grid;overflow:hidden}.image-component img[data-v-ecc98881]{object-fit:cover;width:100%;height:100%;display:block}.alert-component[data-v-bf171873]{border-radius:7px;gap:8px;padding:10px 12px;font-size:.9em;display:flex}.info[data-v-bf171873]{color:#1d4ed8;background:#eff6ff}.success[data-v-bf171873]{color:#047857;background:#ecfdf5}.error[data-v-bf171873]{color:#b91c1c;background:#fef2f2}.content-component[data-v-1c551f9d]{min-width:0}.empty[data-v-1c551f9d]{border:1px dashed var(--designer-border,#d9d5cf);min-height:46px;color:var(--designer-muted,#6b7280);text-align:center;padding:14px}.consent-card[data-v-9008f821]{border:1px solid var(--designer-border,#d9d5cf);border-radius:8px;align-items:center;gap:10px;padding:12px;display:flex}.icon[data-v-9008f821]{color:#15803d;background:#dcfce7;border-radius:50%;place-items:center;width:28px;height:28px;font-weight:700;display:grid}.consent-card div[data-v-9008f821]{gap:3px;display:grid}.consent-card span[data-v-9008f821]{color:var(--designer-muted,#6b7280);font-size:.85em}.scope-list[data-v-cdebac9d]{gap:8px;display:grid}.scope[data-v-cdebac9d]{align-items:center;gap:8px;display:flex}.scope>span[data-v-cdebac9d]:first-child{color:#15803d;font-weight:700}
2
- /*$vite$:1*/