@htlkg/components 0.0.11 → 0.0.13

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.
Files changed (112) hide show
  1. package/dist/{AdminWrapper.vue_vue_type_script_setup_true_lang-B32IylcT.js → AdminWrapper.vue_vue_type_script_setup_true_lang-BhnWQ-b0.js} +26 -29
  2. package/dist/AdminWrapper.vue_vue_type_script_setup_true_lang-BhnWQ-b0.js.map +1 -0
  3. package/dist/Alert.vue_vue_type_script_setup_true_lang-DxPCS-Hx.js.map +1 -1
  4. package/dist/DateRange.vue_vue_type_script_setup_true_lang-BLVg1Hah.js.map +1 -1
  5. package/dist/ProductBadge.vue_vue_type_script_setup_true_lang-Cmr2f4Cy.js.map +1 -1
  6. package/dist/components.css +4 -4
  7. package/dist/composables/index.js +23 -22
  8. package/dist/data/index.js +10 -10
  9. package/dist/{filterHelpers-DgRyoYSa.js → filterHelpers-DpHSlTuh.js} +11 -11
  10. package/dist/filterHelpers-DpHSlTuh.js.map +1 -0
  11. package/dist/index-QK97OdqQ.js.map +1 -1
  12. package/dist/index.js +34 -33
  13. package/dist/navigation/index.js +1 -1
  14. package/dist/{useAdminPage-GhgXp0x8.js → useAdminPage-AgWRvw6o.js} +150 -26
  15. package/dist/useAdminPage-AgWRvw6o.js.map +1 -0
  16. package/package.json +3 -3
  17. package/src/composables/index.ts +1 -0
  18. package/src/composables/useJsonForm.test.ts +272 -0
  19. package/src/composables/useJsonForm.ts +261 -0
  20. package/src/composables/useModal.test.ts +264 -0
  21. package/src/composables/useModal.ts +54 -8
  22. package/src/data/Chart/index.ts +2 -0
  23. package/src/data/DataList/index.ts +1 -0
  24. package/src/data/{DataTable.vue → DataTable/DataTable.vue} +2 -2
  25. package/src/data/DataTable/index.ts +8 -0
  26. package/src/data/SearchableSelect/index.ts +1 -0
  27. package/src/data/Table/index.ts +1 -0
  28. package/src/data/index.ts +5 -15
  29. package/src/domain/BrandCard/index.ts +1 -0
  30. package/src/domain/BrandSelector/index.ts +1 -0
  31. package/src/domain/ProductBadge/index.ts +1 -0
  32. package/src/domain/UserAvatar/index.ts +1 -0
  33. package/src/domain/index.ts +4 -4
  34. package/src/forms/DateRange/index.ts +2 -0
  35. package/src/forms/JsonSchemaForm/index.ts +1 -0
  36. package/src/forms/index.ts +2 -3
  37. package/src/navigation/{AdminWrapper.vue → AdminWrapper/AdminWrapper.vue} +41 -30
  38. package/src/navigation/AdminWrapper/index.ts +1 -0
  39. package/src/navigation/Breadcrumbs/index.ts +1 -0
  40. package/src/navigation/Stepper/index.ts +2 -0
  41. package/src/navigation/Tabs/index.ts +2 -0
  42. package/src/navigation/index.ts +4 -6
  43. package/src/overlays/Alert/index.ts +1 -0
  44. package/src/overlays/Drawer/index.ts +1 -0
  45. package/src/overlays/Modal/index.ts +1 -0
  46. package/src/overlays/Notification/index.ts +1 -0
  47. package/src/overlays/index.ts +4 -4
  48. package/src/patterns/DASHBOARD_PAGE.md +642 -0
  49. package/src/patterns/DETAIL_PAGE.md +446 -0
  50. package/src/patterns/FORM_PAGE.md +439 -0
  51. package/src/patterns/LIST_PAGE.md +340 -0
  52. package/src/patterns/PAGE_PATTERNS.md +110 -0
  53. package/src/patterns/WIZARD_PAGE.md +733 -0
  54. package/dist/AdminWrapper.vue_vue_type_script_setup_true_lang-B32IylcT.js.map +0 -1
  55. package/dist/filterHelpers-DgRyoYSa.js.map +0 -1
  56. package/dist/useAdminPage-GhgXp0x8.js.map +0 -1
  57. package/src/data/Table.vue +0 -295
  58. /package/src/data/{Chart.demo.vue → Chart/Chart.demo.vue} +0 -0
  59. /package/src/data/{Chart.md → Chart/Chart.md} +0 -0
  60. /package/src/data/{Chart.vue → Chart/Chart.vue} +0 -0
  61. /package/src/data/{DataList.md → DataList/DataList.md} +0 -0
  62. /package/src/data/{DataList.test.ts → DataList/DataList.test.ts} +0 -0
  63. /package/src/data/{DataList.vue → DataList/DataList.vue} +0 -0
  64. /package/src/data/{SearchableSelect.md → SearchableSelect/SearchableSelect.md} +0 -0
  65. /package/src/data/{SearchableSelect.vue → SearchableSelect/SearchableSelect.vue} +0 -0
  66. /package/src/data/{Table.demo.vue → Table/Table.demo.vue} +0 -0
  67. /package/src/data/{Table.md → Table/Table.md} +0 -0
  68. /package/src/data/{Table.property.test.ts → Table/Table.property.test.ts} +0 -0
  69. /package/src/data/{Table.test.ts → Table/Table.test.ts} +0 -0
  70. /package/src/data/{Table.unit.test.ts → Table/Table.unit.test.ts} +0 -0
  71. /package/src/domain/{BrandCard.md → BrandCard/BrandCard.md} +0 -0
  72. /package/src/domain/{BrandCard.vue → BrandCard/BrandCard.vue} +0 -0
  73. /package/src/domain/{BrandSelector.md → BrandSelector/BrandSelector.md} +0 -0
  74. /package/src/domain/{BrandSelector.vue → BrandSelector/BrandSelector.vue} +0 -0
  75. /package/src/domain/{ProductBadge.md → ProductBadge/ProductBadge.md} +0 -0
  76. /package/src/domain/{ProductBadge.vue → ProductBadge/ProductBadge.vue} +0 -0
  77. /package/src/domain/{UserAvatar.md → UserAvatar/UserAvatar.md} +0 -0
  78. /package/src/domain/{UserAvatar.vue → UserAvatar/UserAvatar.vue} +0 -0
  79. /package/src/forms/{DateRange.demo.vue → DateRange/DateRange.demo.vue} +0 -0
  80. /package/src/forms/{DateRange.md → DateRange/DateRange.md} +0 -0
  81. /package/src/forms/{DateRange.vue → DateRange/DateRange.vue} +0 -0
  82. /package/src/forms/{JsonSchemaForm.demo.vue → JsonSchemaForm/JsonSchemaForm.demo.vue} +0 -0
  83. /package/src/forms/{JsonSchemaForm.md → JsonSchemaForm/JsonSchemaForm.md} +0 -0
  84. /package/src/forms/{JsonSchemaForm.property.test.ts → JsonSchemaForm/JsonSchemaForm.property.test.ts} +0 -0
  85. /package/src/forms/{JsonSchemaForm.test.ts → JsonSchemaForm/JsonSchemaForm.test.ts} +0 -0
  86. /package/src/forms/{JsonSchemaForm.unit.test.ts → JsonSchemaForm/JsonSchemaForm.unit.test.ts} +0 -0
  87. /package/src/forms/{JsonSchemaForm.vue → JsonSchemaForm/JsonSchemaForm.vue} +0 -0
  88. /package/src/navigation/{Breadcrumbs.demo.vue → Breadcrumbs/Breadcrumbs.demo.vue} +0 -0
  89. /package/src/navigation/{Breadcrumbs.md → Breadcrumbs/Breadcrumbs.md} +0 -0
  90. /package/src/navigation/{Breadcrumbs.test.ts → Breadcrumbs/Breadcrumbs.test.ts} +0 -0
  91. /package/src/navigation/{Breadcrumbs.vue → Breadcrumbs/Breadcrumbs.vue} +0 -0
  92. /package/src/navigation/{Stepper.demo.vue → Stepper/Stepper.demo.vue} +0 -0
  93. /package/src/navigation/{Stepper.md → Stepper/Stepper.md} +0 -0
  94. /package/src/navigation/{Stepper.vue → Stepper/Stepper.vue} +0 -0
  95. /package/src/navigation/{Tabs.demo.vue → Tabs/Tabs.demo.vue} +0 -0
  96. /package/src/navigation/{Tabs.md → Tabs/Tabs.md} +0 -0
  97. /package/src/navigation/{Tabs.test.ts → Tabs/Tabs.test.ts} +0 -0
  98. /package/src/navigation/{Tabs.vue → Tabs/Tabs.vue} +0 -0
  99. /package/src/overlays/{Alert.demo.vue → Alert/Alert.demo.vue} +0 -0
  100. /package/src/overlays/{Alert.md → Alert/Alert.md} +0 -0
  101. /package/src/overlays/{Alert.test.ts → Alert/Alert.test.ts} +0 -0
  102. /package/src/overlays/{Alert.vue → Alert/Alert.vue} +0 -0
  103. /package/src/overlays/{Drawer.md → Drawer/Drawer.md} +0 -0
  104. /package/src/overlays/{Drawer.test.ts → Drawer/Drawer.test.ts} +0 -0
  105. /package/src/overlays/{Drawer.vue → Drawer/Drawer.vue} +0 -0
  106. /package/src/overlays/{Modal.demo.vue → Modal/Modal.demo.vue} +0 -0
  107. /package/src/overlays/{Modal.md → Modal/Modal.md} +0 -0
  108. /package/src/overlays/{Modal.test.ts → Modal/Modal.test.ts} +0 -0
  109. /package/src/overlays/{Modal.vue → Modal/Modal.vue} +0 -0
  110. /package/src/overlays/{Notification.md → Notification/Notification.md} +0 -0
  111. /package/src/overlays/{Notification.test.ts → Notification/Notification.test.ts} +0 -0
  112. /package/src/overlays/{Notification.vue → Notification/Notification.vue} +0 -0
@@ -0,0 +1 @@
1
+ export { default as JsonSchemaForm } from './JsonSchemaForm.vue';
@@ -1,3 +1,2 @@
1
- export { default as JsonSchemaForm } from './JsonSchemaForm.vue';
2
- export { default as DateRange } from './DateRange.vue';
3
- export type { DateRangeValue, DateRangeLiterals } from './DateRange.vue';
1
+ export * from './JsonSchemaForm';
2
+ export * from './DateRange';
@@ -25,7 +25,14 @@ import type { SelectItemType } from "@hotelinking/ui";
25
25
  import { uiWrapper } from "@hotelinking/ui";
26
26
  import { useStore } from "@nanostores/vue";
27
27
  import { computed, ref } from "vue";
28
- import { $user } from "../stores/user";
28
+ import { $user } from "../../stores/user";
29
+
30
+ // Profile menu item interface
31
+ interface ProfileMenuItem {
32
+ name: string;
33
+ id: string;
34
+ href: string;
35
+ }
29
36
 
30
37
  // Props interface (user is now from nanostore)
31
38
  interface Props {
@@ -56,6 +63,7 @@ interface Props {
56
63
  icon: string;
57
64
  active?: boolean;
58
65
  }>;
66
+ profileMenuItems?: ProfileMenuItem[];
59
67
  sidebarOpenByDefault?: boolean;
60
68
  }
61
69
 
@@ -66,6 +74,7 @@ const props = withDefaults(defineProps<Props>(), {
66
74
  selectItems: () => [],
67
75
  selectedItem: () => ({ name: "", id: "" }),
68
76
  productsSidebar: () => [],
77
+ profileMenuItems: () => [],
69
78
  sidebarOpenByDefault: true,
70
79
  });
71
80
 
@@ -80,29 +89,22 @@ const sidebarOpen = ref(props.sidebarOpenByDefault);
80
89
  // Get user from nanostore (no props needed!)
81
90
  const user = useStore($user);
82
91
 
92
+ // Default profile menu items (used when none provided via props)
93
+ const defaultProfileMenu: ProfileMenuItem[] = [
94
+ { name: "Profile", id: "profile", href: "/admin/user" },
95
+ { name: "Settings", id: "settings", href: "/admin/settings" },
96
+ { name: "Logout", id: "logout", href: "#" },
97
+ ];
98
+
83
99
  // Computed properties for UI configuration
84
100
  const topbarConfig = computed(() => {
85
101
  return {
86
102
  logo: props.sidebarLogo,
87
103
  accountLogo: user.value?.avatar || "",
88
104
  alerted: false,
89
- profileMenu: [
90
- {
91
- name: "Profile",
92
- id: "profile",
93
- href: "/profile",
94
- },
95
- {
96
- name: "Settings",
97
- id: "settings",
98
- href: "/settings",
99
- },
100
- {
101
- name: "Logout",
102
- id: "logout",
103
- href: "#",
104
- },
105
- ],
105
+ profileMenu: props.profileMenuItems.length > 0
106
+ ? props.profileMenuItems
107
+ : defaultProfileMenu,
106
108
  brand: {
107
109
  name: user.value?.username || "User",
108
110
  description: user.value?.email || "",
@@ -139,25 +141,34 @@ const handleSelectChanged = (item: SelectItemType | SelectItemType[]) => {
139
141
 
140
142
  const handleTopBarClick = (event: unknown) => {
141
143
  // Handle different possible event formats
142
- let menuItem: string | undefined;
144
+ let menuItemId: string | undefined;
145
+ let menuItemHref: string | undefined;
143
146
 
144
147
  if (typeof event === "string") {
145
- menuItem = event;
148
+ menuItemId = event;
146
149
  } else if (event && typeof event === "object") {
147
- // Check if it's an object with name or href property
148
150
  const eventObj = event as Record<string, unknown>;
149
- menuItem = (eventObj.name as string) || (eventObj.href as string);
151
+ menuItemId = (eventObj.id as string) || (eventObj.name as string);
152
+ menuItemHref = eventObj.href as string;
150
153
  }
151
154
 
152
- console.log("Extracted menu item:", menuItem);
153
-
154
- // The event is the menu item name
155
- if (menuItem === "logout") {
155
+ // Handle logout separately
156
+ if (menuItemId === "logout") {
156
157
  handleLogout();
157
- } else if (menuItem === "profile") {
158
- window.location.href = "/profile";
159
- } else if (menuItem === "settings") {
160
- window.location.href = "/settings";
158
+ return;
159
+ }
160
+
161
+ // Navigate using href from the event object or find it from profile menu
162
+ if (menuItemHref && menuItemHref !== "#") {
163
+ window.location.href = menuItemHref;
164
+ return;
165
+ }
166
+
167
+ // Fallback: find the menu item by id and use its href
168
+ const profileMenu = topbarConfig.value.profileMenu;
169
+ const menuItem = profileMenu.find((item) => item.id === menuItemId || item.name === menuItemId);
170
+ if (menuItem?.href && menuItem.href !== "#") {
171
+ window.location.href = menuItem.href;
161
172
  }
162
173
  };
163
174
 
@@ -0,0 +1 @@
1
+ export { default as AdminWrapper } from './AdminWrapper.vue';
@@ -0,0 +1 @@
1
+ export { default as Breadcrumbs } from './Breadcrumbs.vue';
@@ -0,0 +1,2 @@
1
+ export { default as Stepper } from './Stepper.vue';
2
+ export type { Step } from './Stepper.vue';
@@ -0,0 +1,2 @@
1
+ export { default as Tabs } from './Tabs.vue';
2
+ export type { Tab } from './Tabs.vue';
@@ -1,6 +1,4 @@
1
- export { default as Tabs } from './Tabs.vue';
2
- export type { Tab } from './Tabs.vue';
3
- export { default as Stepper } from './Stepper.vue';
4
- export type { Step } from './Stepper.vue';
5
- export { default as Breadcrumbs } from './Breadcrumbs.vue';
6
- export { default as AdminWrapper } from './AdminWrapper.vue';
1
+ export * from './Tabs';
2
+ export * from './Stepper';
3
+ export * from './Breadcrumbs';
4
+ export * from './AdminWrapper';
@@ -0,0 +1 @@
1
+ export { default as Alert } from './Alert.vue';
@@ -0,0 +1 @@
1
+ export { default as Drawer } from './Drawer.vue';
@@ -0,0 +1 @@
1
+ export { default as Modal } from './Modal.vue';
@@ -0,0 +1 @@
1
+ export { default as Notification } from './Notification.vue';
@@ -1,4 +1,4 @@
1
- export { default as Modal } from './Modal.vue';
2
- export { default as Drawer } from './Drawer.vue';
3
- export { default as Notification } from './Notification.vue';
4
- export { default as Alert } from './Alert.vue';
1
+ export * from './Modal';
2
+ export * from './Drawer';
3
+ export * from './Notification';
4
+ export * from './Alert';