@hyperpackai/hyperui 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/README.md +13 -0
  2. package/dist/components/Accordion/index.d.ts +6 -0
  3. package/dist/components/Accordion/index.d.ts.map +1 -1
  4. package/dist/components/Accordion/index.js +65 -9
  5. package/dist/components/Autocomplete/index.d.ts +12 -2
  6. package/dist/components/Autocomplete/index.d.ts.map +1 -1
  7. package/dist/components/Autocomplete/index.js +148 -24
  8. package/dist/components/Backdrop/index.d.ts +2 -1
  9. package/dist/components/Backdrop/index.d.ts.map +1 -1
  10. package/dist/components/Backdrop/index.js +6 -3
  11. package/dist/components/Checkbox/index.d.ts +1 -0
  12. package/dist/components/Checkbox/index.d.ts.map +1 -1
  13. package/dist/components/Checkbox/index.js +6 -2
  14. package/dist/components/DashboardLayout/index.d.ts +13 -0
  15. package/dist/components/DashboardLayout/index.d.ts.map +1 -1
  16. package/dist/components/DashboardLayout/index.js +50 -7
  17. package/dist/components/DataTable/index.d.ts +43 -0
  18. package/dist/components/DataTable/index.d.ts.map +1 -1
  19. package/dist/components/DataTable/index.js +126 -21
  20. package/dist/components/Dialog/index.d.ts +9 -3
  21. package/dist/components/Dialog/index.d.ts.map +1 -1
  22. package/dist/components/Dialog/index.js +46 -30
  23. package/dist/components/Drawer/index.d.ts +11 -3
  24. package/dist/components/Drawer/index.d.ts.map +1 -1
  25. package/dist/components/Drawer/index.js +66 -11
  26. package/dist/components/DropdownMenu/index.d.ts +5 -3
  27. package/dist/components/DropdownMenu/index.d.ts.map +1 -1
  28. package/dist/components/DropdownMenu/index.js +56 -13
  29. package/dist/components/FocusTrap/index.d.ts.map +1 -1
  30. package/dist/components/FocusTrap/index.js +34 -32
  31. package/dist/components/Input/index.d.ts +2 -0
  32. package/dist/components/Input/index.d.ts.map +1 -1
  33. package/dist/components/Input/index.js +18 -4
  34. package/dist/components/Menu/index.d.ts +6 -2
  35. package/dist/components/Menu/index.d.ts.map +1 -1
  36. package/dist/components/Menu/index.js +50 -15
  37. package/dist/components/Modal/index.d.ts +3 -1
  38. package/dist/components/Modal/index.d.ts.map +1 -1
  39. package/dist/components/Modal/index.js +27 -9
  40. package/dist/components/NestedNavbar/index.d.ts +33 -0
  41. package/dist/components/NestedNavbar/index.d.ts.map +1 -0
  42. package/dist/components/NestedNavbar/index.js +435 -0
  43. package/dist/components/NestedSidebar/index.d.ts +48 -0
  44. package/dist/components/NestedSidebar/index.d.ts.map +1 -0
  45. package/dist/components/NestedSidebar/index.js +368 -0
  46. package/dist/components/Popover/index.d.ts +11 -3
  47. package/dist/components/Popover/index.d.ts.map +1 -1
  48. package/dist/components/Popover/index.js +45 -9
  49. package/dist/components/Radio/index.d.ts +26 -1
  50. package/dist/components/Radio/index.d.ts.map +1 -1
  51. package/dist/components/Radio/index.js +61 -2
  52. package/dist/components/Select/index.d.ts +5 -0
  53. package/dist/components/Select/index.d.ts.map +1 -1
  54. package/dist/components/Select/index.js +22 -5
  55. package/dist/components/Sheet/index.d.ts +9 -3
  56. package/dist/components/Sheet/index.d.ts.map +1 -1
  57. package/dist/components/Sheet/index.js +48 -23
  58. package/dist/components/Sidebar/index.d.ts +20 -1
  59. package/dist/components/Sidebar/index.d.ts.map +1 -1
  60. package/dist/components/Sidebar/index.js +285 -8
  61. package/dist/components/SpeedDial/index.d.ts +10 -0
  62. package/dist/components/SpeedDial/index.d.ts.map +1 -1
  63. package/dist/components/SpeedDial/index.js +61 -11
  64. package/dist/components/Switch/index.d.ts +2 -0
  65. package/dist/components/Switch/index.d.ts.map +1 -1
  66. package/dist/components/Switch/index.js +6 -2
  67. package/dist/components/Tabs/index.d.ts +3 -0
  68. package/dist/components/Tabs/index.d.ts.map +1 -1
  69. package/dist/components/Tabs/index.js +47 -8
  70. package/dist/components/TextField/index.d.ts +2 -0
  71. package/dist/components/TextField/index.d.ts.map +1 -1
  72. package/dist/components/TextField/index.js +12 -4
  73. package/dist/components/Textarea/index.d.ts +5 -0
  74. package/dist/components/Textarea/index.d.ts.map +1 -1
  75. package/dist/components/Textarea/index.js +21 -4
  76. package/dist/components/Transition/index.d.ts +14 -0
  77. package/dist/components/Transition/index.d.ts.map +1 -0
  78. package/dist/components/Transition/index.js +49 -0
  79. package/dist/components/TransitionGroup/index.d.ts +16 -0
  80. package/dist/components/TransitionGroup/index.d.ts.map +1 -0
  81. package/dist/components/TransitionGroup/index.js +95 -0
  82. package/dist/components/data.d.ts +81 -16
  83. package/dist/components/data.d.ts.map +1 -1
  84. package/dist/components/data.js +163 -31
  85. package/dist/components/enterprise.d.ts +85 -26
  86. package/dist/components/enterprise.d.ts.map +1 -1
  87. package/dist/components/enterprise.js +211 -36
  88. package/dist/components/index.d.ts +21 -13
  89. package/dist/components/index.d.ts.map +1 -1
  90. package/dist/components/index.js +7 -2
  91. package/dist/portal.d.ts.map +1 -1
  92. package/dist/portal.js +3 -0
  93. package/dist/theme/index.d.ts +5 -6
  94. package/dist/theme/index.d.ts.map +1 -1
  95. package/dist/theme/index.js +30 -0
  96. package/dist/tokens/index.d.ts.map +1 -1
  97. package/dist/tokens/index.js +11 -0
  98. package/package.json +6 -1
@@ -4,6 +4,18 @@
4
4
  */
5
5
  import { injectCSS, cn, h } from "../theme/index.js";
6
6
  import { Button } from "./Button/index.js";
7
+ function rootProps(props, className, extra) {
8
+ return {
9
+ ...extra,
10
+ id: props.id,
11
+ class: cn(className, props.class),
12
+ style: mergeStyle(props.style, extra?.style),
13
+ "data-testid": props.testId
14
+ };
15
+ }
16
+ function mergeStyle(base, extra) {
17
+ return [base, extra].filter(Boolean).join(";") || undefined;
18
+ }
7
19
  const ENTERPRISE_CSS = `
8
20
  .hu-enterprise {
9
21
  display: flex; flex-direction: column; gap: var(--hu-space-3);
@@ -227,7 +239,7 @@ const ENTERPRISE_CSS = `
227
239
  export function ApprovalFlow(props) {
228
240
  injectCSS("hu-enterprise", ENTERPRISE_CSS);
229
241
  const pending = props.steps.filter((step) => (step.status ?? "pending") === "pending").length;
230
- return h("section", { class: cn("hu-enterprise hu-approval-flow", props.class), "aria-label": props.title ?? "Approval flow" }, enterpriseHeader(props.title ?? "Approval flow", props.description ?? `${pending} pending`), h("ol", { class: "hu-approval-flow__steps" }, ...props.steps.map((step, index) => {
242
+ return h("section", rootProps(props, "hu-enterprise hu-approval-flow", { "aria-label": props.title ?? "Approval flow" }), enterpriseHeader(props.title ?? "Approval flow", props.description ?? `${pending} pending`), h("ol", { class: "hu-approval-flow__steps" }, ...props.steps.map((step, index) => {
231
243
  const status = step.status ?? "pending";
232
244
  return h("li", {
233
245
  key: step.id,
@@ -238,7 +250,7 @@ export function ApprovalFlow(props) {
238
250
  }
239
251
  export function AuditTrail(props) {
240
252
  injectCSS("hu-enterprise", ENTERPRISE_CSS);
241
- return h("section", { class: cn("hu-enterprise hu-audit-trail", props.class), "aria-label": props.title ?? "Audit trail" }, enterpriseHeader(props.title ?? "Audit trail", props.description ?? `${props.events.length} events`), h("div", { class: "hu-audit-trail__list", role: "list" }, ...props.events.map((event) => h("article", {
253
+ return h("section", rootProps(props, "hu-enterprise hu-audit-trail", { "aria-label": props.title ?? "Audit trail" }), enterpriseHeader(props.title ?? "Audit trail", props.description ?? `${props.events.length} events`), h("div", { class: "hu-audit-trail__list", role: "list" }, ...props.events.map((event) => h("article", {
242
254
  key: event.id,
243
255
  class: cn("hu-audit-event", event.severity && `hu-audit-event--${event.severity}`),
244
256
  role: "listitem",
@@ -249,84 +261,239 @@ export function AuditTrail(props) {
249
261
  export function PermissionMatrix(props) {
250
262
  injectCSS("hu-enterprise", ENTERPRISE_CSS);
251
263
  const value = props.value ?? {};
252
- return h("section", { class: cn("hu-enterprise", props.class), "aria-label": props.title ?? "Permission matrix" }, enterpriseHeader(props.title ?? "Permission matrix", props.description ?? `${props.resources.length} resources`), h("div", { class: "hu-permission-matrix" }, h("table", { role: "grid" }, h("thead", {}, h("tr", {}, h("th", { scope: "col" }, "Resource"), ...props.actions.map((action) => h("th", { key: action.key, scope: "col" }, action.label)))), h("tbody", {}, ...props.resources.map((resource) => h("tr", { key: resource.key }, h("th", { scope: "row" }, resource.label), ...props.actions.map((action) => {
264
+ const resourceHeaderId = "hu-permission-resource";
265
+ return h("section", rootProps(props, "hu-enterprise", {
266
+ "aria-label": props["aria-label"] ?? props.title ?? "Permission matrix",
267
+ "aria-labelledby": props["aria-labelledby"]
268
+ }), enterpriseHeader(props.title ?? "Permission matrix", props.description ?? `${props.resources.length} resources`), h("div", { class: "hu-permission-matrix", "aria-label": props.matrixLabel ?? "Permissions", "aria-rowcount": props.resources.length }, h("table", { role: "grid", "aria-rowcount": props.resources.length }, h("thead", {}, h("tr", {}, h("th", { id: resourceHeaderId, role: "columnheader", scope: "col" }, props.resourceHeaderLabel ?? "Resource"), ...props.actions.map((action) => h("th", {
269
+ key: action.key,
270
+ id: getPermissionActionId(action),
271
+ role: "columnheader",
272
+ scope: "col",
273
+ "aria-label": action.headerLabel
274
+ }, action.label)))), h("tbody", {}, ...props.resources.map((resource, rowIndex) => h("tr", {
275
+ key: resource.key,
276
+ role: "row",
277
+ "aria-rowindex": rowIndex + 1,
278
+ "aria-disabled": resource.disabled ? "true" : undefined,
279
+ "aria-label": resource.rowLabel
280
+ }, h("th", { id: getPermissionResourceId(resource), role: "rowheader", scope: "row", headers: resourceHeaderId }, resource.label), ...props.actions.map((action) => {
253
281
  const checked = value[resource.key]?.includes(action.key) ?? false;
254
- return h("td", { key: action.key }, h("input", {
282
+ const disabled = resource.disabled || action.disabled || (props.isPermissionDisabled?.(resource, action) ?? false);
283
+ return h("td", {
284
+ key: action.key,
285
+ role: "gridcell",
286
+ headers: `${getPermissionResourceId(resource)} ${getPermissionActionId(action)}`
287
+ }, h("input", {
255
288
  type: "checkbox",
256
289
  checked,
257
- "aria-label": `${resource.label} ${action.label}`,
258
- onChange: (e) => props.onChange?.(resource.key, action.key, e.target.checked)
290
+ disabled,
291
+ "aria-label": props.permissionLabel?.(resource, action) ?? `${resource.label} ${action.label}`,
292
+ onChange: (e) => {
293
+ if (disabled)
294
+ return;
295
+ props.onChange?.(resource.key, action.key, e.target.checked);
296
+ }
259
297
  }));
260
298
  })))))));
261
299
  }
262
300
  export function RoleManager(props) {
263
301
  injectCSS("hu-enterprise", ENTERPRISE_CSS);
264
302
  const selectedRole = props.roles.find((role) => role.id === props.selectedRole) ?? props.roles[0];
265
- return h("section", { class: cn("hu-enterprise hu-role-manager", props.class), "aria-label": props.title ?? "Role manager" }, h("div", { class: "hu-enterprise__header" }, h("div", {}, h("div", { class: "hu-enterprise__title" }, props.title ?? "Role manager"), h("div", { class: "hu-enterprise__meta" }, props.description ?? `${props.roles.length} roles`)), props.onCreateRole && Button({ type: "button", size: "sm", children: "New role", onClick: props.onCreateRole })), h("div", { class: "hu-role-manager__grid" }, h("div", { class: "hu-role-manager__roles", role: "listbox", "aria-label": "Roles" }, ...props.roles.map((role) => h("button", {
303
+ return h("section", rootProps(props, "hu-enterprise hu-role-manager", {
304
+ "aria-label": props["aria-label"] ?? props.title ?? "Role manager",
305
+ "aria-labelledby": props["aria-labelledby"]
306
+ }), h("div", { class: "hu-enterprise__header" }, h("div", {}, h("div", { class: "hu-enterprise__title" }, props.title ?? "Role manager"), h("div", { class: "hu-enterprise__meta" }, props.description ?? `${props.roles.length} roles`)), props.onCreateRole && Button({ type: "button", size: "sm", children: props.createRoleLabel ?? "New role", onClick: props.onCreateRole })), h("div", { class: "hu-role-manager__grid" }, h("div", { class: "hu-role-manager__roles", role: "listbox", "aria-label": props.rolesLabel ?? "Roles" }, ...props.roles.map((role) => h("button", {
266
307
  key: role.id,
267
308
  type: "button",
268
309
  class: "hu-role-manager__role",
269
310
  role: "option",
311
+ disabled: role.disabled,
312
+ "aria-disabled": role.disabled ? "true" : undefined,
313
+ "aria-label": props.roleLabel?.(role) ?? role.label,
270
314
  "aria-selected": selectedRole?.id === role.id ? "true" : "false",
271
- onClick: () => props.onRoleSelect?.(role.id)
272
- }, h("span", {}, role.name), h("span", { class: "hu-enterprise__meta" }, `${role.users ?? 0} users`)))), h("div", { class: "hu-role-manager__details", "aria-label": "Role details" }, selectedRole
315
+ onClick: () => {
316
+ if (role.disabled)
317
+ return;
318
+ props.onRoleSelect?.(role.id);
319
+ }
320
+ }, h("span", {}, role.name), h("span", { class: "hu-enterprise__meta" }, `${role.users ?? 0} users`)))), h("div", { class: "hu-role-manager__details", "aria-label": props.detailsLabel ?? "Role details" }, selectedRole
273
321
  ? [
274
322
  h("div", { class: "hu-enterprise__title" }, selectedRole.name),
275
323
  selectedRole.description && h("div", { class: "hu-enterprise__meta" }, selectedRole.description),
276
- h("div", { class: "hu-role-manager__permissions", "aria-label": "Role permissions" }, ...(selectedRole.permissions ?? []).map((permission) => h("span", { key: permission, class: "hu-role-manager__permission" }, permission)))
324
+ h("div", { class: "hu-role-manager__permissions", "aria-label": props.permissionsLabel ?? "Role permissions" }, (selectedRole.permissions?.length ?? 0) > 0
325
+ ? selectedRole.permissions.map((permission) => h("span", { key: permission, class: "hu-role-manager__permission" }, permission))
326
+ : h("span", { class: "hu-enterprise__meta" }, props.noPermissionsMessage ?? "No permissions assigned."))
277
327
  ]
278
- : h("div", { class: "hu-enterprise__meta" }, "No role selected."))));
328
+ : h("div", { class: "hu-enterprise__meta" }, props.emptyMessage ?? "No role selected."))));
279
329
  }
280
330
  export function FeatureFlags(props) {
281
331
  injectCSS("hu-enterprise", ENTERPRISE_CSS);
282
332
  const enabledCount = props.flags.filter((flag) => flag.enabled).length;
283
- return h("section", { class: cn("hu-enterprise hu-feature-flags", props.class), "aria-label": props.title ?? "Feature flags" }, enterpriseHeader(props.title ?? "Feature flags", props.description ?? `${enabledCount} enabled · ${props.flags.length} total`), h("div", { class: "hu-feature-flags__list", role: "list" }, ...props.flags.map((flag) => {
333
+ return h("section", rootProps(props, "hu-enterprise hu-feature-flags", {
334
+ "aria-label": props["aria-label"] ?? props.title ?? "Feature flags",
335
+ "aria-labelledby": props["aria-labelledby"]
336
+ }), enterpriseHeader(props.title ?? "Feature flags", props.description ?? `${enabledCount} enabled · ${props.flags.length} total`), h("div", { class: "hu-feature-flags__list", role: "list", "aria-label": props.listLabel ?? "Feature flags" }, ...props.flags.map((flag) => {
284
337
  const enabled = flag.enabled ?? false;
285
- return h("article", { key: flag.key, class: "hu-feature-flag", role: "listitem" }, h("div", {}, h("div", { class: "hu-feature-flag__name" }, flag.name), h("div", { class: "hu-feature-flag__details" }, [flag.description, flag.environment, flag.rollout !== undefined ? `${flag.rollout}% rollout` : undefined].filter(Boolean).join(" · "))), h("div", { class: "hu-feature-flag__actions" }, h("span", { class: cn("hu-feature-flag__badge", enabled ? "hu-feature-flag__badge--enabled" : "hu-feature-flag__badge--disabled") }, enabled ? "Enabled" : "Disabled"), h("input", {
338
+ const disabled = flag.disabled || (props.isFlagDisabled?.(flag) ?? false);
339
+ return h("article", {
340
+ key: flag.key,
341
+ class: "hu-feature-flag",
342
+ role: "listitem",
343
+ "aria-disabled": disabled ? "true" : undefined,
344
+ "aria-label": props.flagLabel?.(flag) ?? flag.label
345
+ }, h("div", {}, h("div", { class: "hu-feature-flag__name" }, flag.name), h("div", { class: "hu-feature-flag__details" }, [flag.description, flag.environment, flag.rollout !== undefined ? `${flag.rollout}% rollout` : undefined].filter(Boolean).join(" · "))), h("div", { class: "hu-feature-flag__actions" }, h("span", { class: cn("hu-feature-flag__badge", enabled ? "hu-feature-flag__badge--enabled" : "hu-feature-flag__badge--disabled") }, enabled ? props.enabledLabel ?? "Enabled" : props.disabledLabel ?? "Disabled"), h("input", {
286
346
  type: "checkbox",
287
347
  role: "switch",
288
348
  checked: enabled,
289
- "aria-label": `Toggle ${flag.name}`,
290
- onChange: (e) => props.onToggle?.(flag.key, e.target.checked)
291
- }), props.onEdit && Button({ type: "button", size: "sm", variant: "secondary", children: "Edit", onClick: () => props.onEdit?.(flag.key) })));
349
+ disabled,
350
+ "aria-label": props.flagLabel?.(flag) ?? `Toggle ${flag.name}`,
351
+ onChange: (e) => {
352
+ if (disabled)
353
+ return;
354
+ props.onToggle?.(flag.key, e.target.checked);
355
+ }
356
+ }), props.onEdit && Button({
357
+ type: "button",
358
+ size: "sm",
359
+ variant: "secondary",
360
+ disabled,
361
+ children: props.editLabel ?? "Edit",
362
+ onClick: () => {
363
+ if (disabled)
364
+ return;
365
+ props.onEdit?.(flag.key);
366
+ }
367
+ })));
292
368
  })));
293
369
  }
294
370
  export function TenantSelector(props) {
295
371
  injectCSS("hu-enterprise", ENTERPRISE_CSS);
296
372
  const selected = props.tenants.find((tenant) => tenant.id === props.value) ?? props.tenants[0];
297
- return h("section", { class: cn("hu-enterprise hu-tenant-selector", props.class), "aria-label": props.title ?? "Tenant selector" }, enterpriseHeader(props.title ?? "Tenant selector", props.description ?? `${props.tenants.length} tenants`), h("div", { class: "hu-tenant-selector__control" }, h("label", {}, h("span", { class: "hu-enterprise__meta" }, "Tenant"), h("select", {
373
+ const selectedDisabled = selected ? selected.disabled || (props.isTenantDisabled?.(selected) ?? false) : false;
374
+ return h("section", rootProps(props, "hu-enterprise hu-tenant-selector", {
375
+ "aria-label": props["aria-label"] ?? props.title ?? "Tenant selector",
376
+ "aria-labelledby": props["aria-labelledby"]
377
+ }), enterpriseHeader(props.title ?? "Tenant selector", props.description ?? `${props.tenants.length} tenants`), props.tenants.length > 0 ? h("div", { class: "hu-tenant-selector__control" }, h("label", {}, h("span", { class: "hu-enterprise__meta" }, props.tenantLabel ?? "Tenant"), h("select", {
298
378
  class: "hu-tenant-selector__select",
299
379
  value: selected?.id,
300
- onChange: (e) => props.onChange?.(e.target.value)
301
- }, ...props.tenants.map((tenant) => h("option", { key: tenant.id, value: tenant.id }, tenant.name)))), selected && props.onManage && Button({ type: "button", size: "sm", children: "Manage", onClick: () => props.onManage?.(selected.id) })), selected && h("div", { class: "hu-tenant-selector__summary", "aria-live": "polite" }, h("span", {}, selected.plan ?? "No plan"), h("span", {}, selected.region ?? "No region"), h("span", {}, selected.status ?? "active")));
380
+ "aria-label": props.selectLabel ?? props.tenantLabel ?? "Tenant",
381
+ onChange: (e) => {
382
+ const nextId = e.target.value;
383
+ const nextTenant = props.tenants.find((tenant) => tenant.id === nextId);
384
+ if (!nextTenant || nextTenant.disabled || (props.isTenantDisabled?.(nextTenant) ?? false))
385
+ return;
386
+ props.onChange?.(nextId);
387
+ }
388
+ }, ...props.tenants.map((tenant) => {
389
+ const disabled = tenant.disabled || (props.isTenantDisabled?.(tenant) ?? false);
390
+ return h("option", { key: tenant.id, value: tenant.id, disabled }, props.tenantOptionLabel?.(tenant) ?? tenant.label ?? tenant.name);
391
+ }))), selected && props.onManage && Button({
392
+ type: "button",
393
+ size: "sm",
394
+ disabled: selectedDisabled,
395
+ children: props.manageLabel ?? "Manage",
396
+ onClick: () => {
397
+ if (selectedDisabled)
398
+ return;
399
+ props.onManage?.(selected.id);
400
+ }
401
+ })) : h("div", { class: "hu-enterprise__meta" }, props.emptyMessage ?? "No tenants available."), selected && h("div", {
402
+ class: "hu-tenant-selector__summary",
403
+ "aria-live": "polite",
404
+ "aria-label": props.summaryLabel ?? "Selected tenant"
405
+ }, h("span", {}, selected.plan ?? "No plan"), h("span", {}, selected.region ?? "No region"), h("span", {}, selected.status ?? "active")));
302
406
  }
303
407
  export function NotificationCenter(props) {
304
408
  injectCSS("hu-enterprise", ENTERPRISE_CSS);
305
409
  const unread = props.notifications.filter((notification) => !notification.read).length;
306
- return h("section", { class: cn("hu-enterprise hu-notification-center", props.class), "aria-label": props.title ?? "Notification center" }, enterpriseHeader(props.title ?? "Notification center", props.description ?? `${unread} unread`), h("div", { class: "hu-notification-center__list", role: "list", "aria-live": "polite" }, ...props.notifications.map((notification) => {
410
+ return h("section", rootProps(props, "hu-enterprise hu-notification-center", {
411
+ "aria-label": props["aria-label"] ?? props.title ?? "Notification center",
412
+ "aria-labelledby": props["aria-labelledby"]
413
+ }), enterpriseHeader(props.title ?? "Notification center", props.description ?? `${unread} unread`), h("div", {
414
+ class: "hu-notification-center__list",
415
+ role: "list",
416
+ "aria-live": "polite",
417
+ "aria-label": props.listLabel ?? "Notifications"
418
+ }, ...(props.notifications.length > 0 ? props.notifications.map((notification) => {
307
419
  const kind = notification.kind ?? "info";
308
- return h("article", { key: notification.id, class: "hu-notification", role: "listitem" }, h("div", {}, h("div", { class: "hu-notification__title" }, notification.title), notification.message && h("div", { class: "hu-notification__meta" }, notification.message), notification.timestamp && h("div", { class: "hu-notification__meta" }, notification.timestamp)), h("div", { class: "hu-notification__actions" }, h("span", { class: cn("hu-notification__badge", `hu-notification__badge--${kind}`) }, notification.read ? "Read" : "Unread"), !notification.read && props.onMarkRead && Button({ type: "button", size: "sm", variant: "secondary", children: "Mark read", onClick: () => props.onMarkRead?.(notification.id) }), props.onDismiss && Button({ type: "button", size: "sm", variant: "ghost", children: "Dismiss", onClick: () => props.onDismiss?.(notification.id) })));
309
- })));
420
+ const disabled = notification.disabled || (props.isNotificationDisabled?.(notification) ?? false);
421
+ return h("article", {
422
+ key: notification.id,
423
+ class: "hu-notification",
424
+ role: "listitem",
425
+ "aria-disabled": disabled ? "true" : undefined,
426
+ "aria-label": props.notificationLabel?.(notification) ?? notification.label
427
+ }, h("div", {}, h("div", { class: "hu-notification__title" }, notification.title), notification.message && h("div", { class: "hu-notification__meta" }, notification.message), notification.timestamp && h("div", { class: "hu-notification__meta" }, notification.timestamp)), h("div", { class: "hu-notification__actions" }, h("span", { class: cn("hu-notification__badge", `hu-notification__badge--${kind}`) }, notification.read ? props.readLabel ?? "Read" : props.unreadLabel ?? "Unread"), !notification.read && props.onMarkRead && Button({
428
+ type: "button",
429
+ size: "sm",
430
+ variant: "secondary",
431
+ disabled,
432
+ children: props.markReadLabel ?? "Mark read",
433
+ onClick: () => {
434
+ if (disabled)
435
+ return;
436
+ props.onMarkRead?.(notification.id);
437
+ }
438
+ }), props.onDismiss && Button({
439
+ type: "button",
440
+ size: "sm",
441
+ variant: "ghost",
442
+ disabled,
443
+ children: props.dismissLabel ?? "Dismiss",
444
+ onClick: () => {
445
+ if (disabled)
446
+ return;
447
+ props.onDismiss?.(notification.id);
448
+ }
449
+ })));
450
+ }) : [h("div", { class: "hu-enterprise__meta" }, props.emptyMessage ?? "No notifications.")])));
310
451
  }
311
452
  export function ActivityFeed(props) {
312
453
  injectCSS("hu-enterprise", ENTERPRISE_CSS);
313
- return h("section", { class: cn("hu-enterprise hu-activity-feed", props.class), "aria-label": props.title ?? "Activity feed" }, enterpriseHeader(props.title ?? "Activity feed", props.description ?? `${props.items.length} activities`), h("div", { class: "hu-activity-feed__list", role: "feed" }, ...props.items.map((item) => h("article", {
314
- key: item.id,
315
- class: "hu-activity-item",
316
- role: "article",
317
- tabindex: props.onItemClick ? 0 : undefined,
318
- onClick: props.onItemClick ? () => props.onItemClick?.(item) : undefined
319
- }, h("span", { class: "hu-activity-item__avatar", "aria-hidden": "true" }, item.avatar ?? initials(item.actor)), h("div", {}, h("div", { class: "hu-activity-item__title" }, `${item.actor} ${item.action}`), item.target && h("div", { class: "hu-activity-item__meta" }, item.target), item.timestamp && h("time", { class: "hu-activity-item__meta" }, item.timestamp)), props.onItemClick && Button({ type: "button", size: "sm", variant: "ghost", children: "Open", onClick: () => props.onItemClick?.(item) })))));
454
+ return h("section", rootProps(props, "hu-enterprise hu-activity-feed", {
455
+ "aria-label": props["aria-label"] ?? props.title ?? "Activity feed",
456
+ "aria-labelledby": props["aria-labelledby"]
457
+ }), enterpriseHeader(props.title ?? "Activity feed", props.description ?? `${props.items.length} activities`), h("div", { class: "hu-activity-feed__list", role: "feed", "aria-label": props.feedLabel ?? "Activity feed" }, ...(props.items.length > 0 ? props.items.map((item) => {
458
+ const disabled = item.disabled || (props.isItemDisabled?.(item) ?? false);
459
+ const interactive = Boolean(props.onItemClick) && !disabled;
460
+ return h("article", {
461
+ key: item.id,
462
+ class: "hu-activity-item",
463
+ role: "article",
464
+ tabindex: interactive ? 0 : undefined,
465
+ "aria-disabled": disabled ? "true" : undefined,
466
+ "aria-label": props.itemLabel?.(item) ?? item.label,
467
+ onClick: interactive ? () => props.onItemClick?.(item) : undefined,
468
+ onKeyDown: interactive ? (event) => {
469
+ if (event.key !== "Enter" && event.key !== " ")
470
+ return;
471
+ event.preventDefault();
472
+ props.onItemClick?.(item);
473
+ } : undefined
474
+ }, h("span", { class: "hu-activity-item__avatar", "aria-hidden": "true" }, item.avatar ?? initials(item.actor)), h("div", {}, h("div", { class: "hu-activity-item__title" }, `${item.actor} ${item.action}`), item.target && h("div", { class: "hu-activity-item__meta" }, item.target), item.timestamp && h("time", { class: "hu-activity-item__meta" }, item.timestamp)), props.onItemClick && Button({
475
+ type: "button",
476
+ size: "sm",
477
+ variant: "ghost",
478
+ disabled,
479
+ children: props.openLabel ?? "Open",
480
+ onClick: () => {
481
+ if (disabled)
482
+ return;
483
+ props.onItemClick?.(item);
484
+ }
485
+ }));
486
+ }) : [h("div", { class: "hu-enterprise__meta" }, props.emptyMessage ?? "No activity yet.")])));
320
487
  }
321
488
  export function OrgChart(props) {
322
489
  injectCSS("hu-enterprise", ENTERPRISE_CSS);
323
490
  const total = countOrgNodes(props.nodes);
324
- return h("section", { class: cn("hu-enterprise hu-org-chart", props.class), "aria-label": props.title ?? "Org chart" }, enterpriseHeader(props.title ?? "Org chart", props.description ?? `${total} people`), h("div", { class: "hu-org-chart__tree", role: "tree" }, ...props.nodes.map((node) => renderOrgNode(node, props.onNodeSelect, 1))));
491
+ return h("section", rootProps(props, "hu-enterprise hu-org-chart", { "aria-label": props.title ?? "Org chart" }), enterpriseHeader(props.title ?? "Org chart", props.description ?? `${total} people`), h("div", { class: "hu-org-chart__tree", role: "tree" }, ...props.nodes.map((node) => renderOrgNode(node, props.onNodeSelect, 1))));
325
492
  }
326
493
  export function GanttChart(props) {
327
494
  injectCSS("hu-enterprise", ENTERPRISE_CSS);
328
495
  const range = getGanttRange(props.tasks);
329
- return h("section", { class: cn("hu-enterprise", props.class), "aria-label": props.title ?? "Gantt chart" }, enterpriseHeader(props.title ?? "Gantt chart", props.description ?? `${props.tasks.length} tasks`), h("div", { class: "hu-gantt", role: "region", "aria-label": "Project timeline" }, h("table", {}, h("thead", {}, h("tr", {}, h("th", { scope: "col" }, "Task"), h("th", { scope: "col" }, "Owner"), h("th", { scope: "col" }, "Timeline"), h("th", { scope: "col" }, "Progress"))), h("tbody", {}, ...props.tasks.map((task) => {
496
+ return h("section", rootProps(props, "hu-enterprise", { "aria-label": props.title ?? "Gantt chart" }), enterpriseHeader(props.title ?? "Gantt chart", props.description ?? `${props.tasks.length} tasks`), h("div", { class: "hu-gantt", role: "region", "aria-label": "Project timeline" }, h("table", {}, h("thead", {}, h("tr", {}, h("th", { scope: "col" }, "Task"), h("th", { scope: "col" }, "Owner"), h("th", { scope: "col" }, "Timeline"), h("th", { scope: "col" }, "Progress"))), h("tbody", {}, ...props.tasks.map((task) => {
330
497
  const startOffset = range.days === 0 ? 0 : daysBetween(range.start, parseDate(task.start)) / range.days * 100;
331
498
  const duration = range.days === 0 ? 100 : Math.max(1, daysBetween(parseDate(task.start), parseDate(task.end)) / range.days * 100);
332
499
  return h("tr", {
@@ -340,11 +507,10 @@ export function GanttChart(props) {
340
507
  }
341
508
  export function KanbanBoard(props) {
342
509
  injectCSS("hu-enterprise", ENTERPRISE_CSS);
343
- return h("section", {
344
- class: cn("hu-enterprise hu-kanban-board", props.class),
510
+ return h("section", rootProps(props, "hu-enterprise hu-kanban-board", {
345
511
  style: `--hu-kanban-columns:${Math.max(1, props.columns.length)}`,
346
512
  "aria-label": props.title ?? "Kanban board"
347
- }, enterpriseHeader(props.title ?? "Kanban board", props.description ?? `${props.cards.length} cards`), h("div", { class: "hu-kanban-board__columns" }, ...props.columns.map((column) => {
513
+ }), enterpriseHeader(props.title ?? "Kanban board", props.description ?? `${props.cards.length} cards`), h("div", { class: "hu-kanban-board__columns" }, ...props.columns.map((column) => {
348
514
  const cards = props.cards.filter((card) => card.column === column.id);
349
515
  return h("section", { key: column.id, class: "hu-kanban-column", "aria-label": column.title }, h("div", { class: "hu-kanban-column__header" }, h("span", {}, column.title), h("span", { class: "hu-enterprise__meta" }, `${cards.length}${column.limit ? `/${column.limit}` : ""}`)), ...cards.map((card) => h("article", { key: card.id, class: "hu-kanban-card" }, h("div", { class: "hu-kanban-card__title" }, card.title), card.description && h("div", { class: "hu-kanban-card__meta" }, card.description), h("div", { class: "hu-kanban-card__meta" }, [card.assignee, card.priority].filter(Boolean).join(" · ")), h("div", { class: "hu-kanban-card__actions" }, props.onCardSelect && Button({ type: "button", size: "sm", variant: "ghost", children: "Open", onClick: () => props.onCardSelect?.(card) }), props.onCardMove && props.columns.filter((target) => target.id !== column.id).map((target) => Button({ type: "button", size: "sm", variant: "secondary", children: `Move to ${target.title}`, onClick: () => props.onCardMove?.(card.id, target.id) }))))));
350
516
  })));
@@ -352,7 +518,7 @@ export function KanbanBoard(props) {
352
518
  export function WorkflowDesigner(props) {
353
519
  injectCSS("hu-enterprise", ENTERPRISE_CSS);
354
520
  const nodeMap = new Map(props.nodes.map((node, index) => [node.id, resolveWorkflowNodePosition(node, index)]));
355
- return h("section", { class: cn("hu-enterprise hu-workflow-designer", props.class), "aria-label": props.title ?? "Workflow designer" }, h("div", { class: "hu-enterprise__header" }, h("div", {}, h("div", { class: "hu-enterprise__title" }, props.title ?? "Workflow designer"), h("div", { class: "hu-enterprise__meta" }, props.description ?? `${props.nodes.length} nodes · ${props.edges?.length ?? 0} edges`)), props.onAddNode && Button({ type: "button", size: "sm", children: "Add node", onClick: props.onAddNode })), h("div", { class: "hu-workflow-designer__canvas", role: "application", "aria-label": "Workflow canvas" }, h("svg", { class: "hu-workflow-designer__edges", viewBox: "0 0 760 320", "aria-hidden": "true" }, ...(props.edges ?? []).map((edge) => {
521
+ return h("section", rootProps(props, "hu-enterprise hu-workflow-designer", { "aria-label": props.title ?? "Workflow designer" }), h("div", { class: "hu-enterprise__header" }, h("div", {}, h("div", { class: "hu-enterprise__title" }, props.title ?? "Workflow designer"), h("div", { class: "hu-enterprise__meta" }, props.description ?? `${props.nodes.length} nodes · ${props.edges?.length ?? 0} edges`)), props.onAddNode && Button({ type: "button", size: "sm", children: "Add node", onClick: props.onAddNode })), h("div", { class: "hu-workflow-designer__canvas", role: "application", "aria-label": "Workflow canvas" }, h("svg", { class: "hu-workflow-designer__edges", viewBox: "0 0 760 320", "aria-hidden": "true" }, ...(props.edges ?? []).map((edge) => {
356
522
  const from = nodeMap.get(edge.from);
357
523
  const to = nodeMap.get(edge.to);
358
524
  if (!from || !to)
@@ -382,7 +548,7 @@ export function DocumentViewer(props) {
382
548
  injectCSS("hu-enterprise", ENTERPRISE_CSS);
383
549
  const page = props.page ?? 1;
384
550
  const pages = Math.max(1, props.document.pages ?? 1);
385
- return h("section", { class: cn("hu-enterprise hu-document-viewer", props.class), "aria-label": props.title ?? "Document viewer" }, h("div", { class: "hu-document-viewer__toolbar" }, h("div", {}, h("div", { class: "hu-document-viewer__name" }, props.title ?? props.document.name), h("div", { class: "hu-document-viewer__meta" }, props.description ?? [props.document.kind ?? "unknown", props.document.size, `${page} / ${pages}`].filter(Boolean).join(" · "))), h("div", { class: "hu-document-viewer__actions" }, Button({ type: "button", size: "sm", variant: "secondary", disabled: page <= 1, children: "Previous", onClick: () => props.onPageChange?.(page - 1) }), Button({ type: "button", size: "sm", variant: "secondary", disabled: page >= pages, children: "Next", onClick: () => props.onPageChange?.(page + 1) }), props.onDownload && Button({ type: "button", size: "sm", children: "Download", onClick: () => props.onDownload?.(props.document) }))), h("div", { class: "hu-document-viewer__frame", role: "document", "aria-label": props.document.name }, props.document.kind === "image" && props.document.url
551
+ return h("section", rootProps(props, "hu-enterprise hu-document-viewer", { "aria-label": props.title ?? "Document viewer" }), h("div", { class: "hu-document-viewer__toolbar" }, h("div", {}, h("div", { class: "hu-document-viewer__name" }, props.title ?? props.document.name), h("div", { class: "hu-document-viewer__meta" }, props.description ?? [props.document.kind ?? "unknown", props.document.size, `${page} / ${pages}`].filter(Boolean).join(" · "))), h("div", { class: "hu-document-viewer__actions" }, Button({ type: "button", size: "sm", variant: "secondary", disabled: page <= 1, children: "Previous", onClick: () => props.onPageChange?.(page - 1) }), Button({ type: "button", size: "sm", variant: "secondary", disabled: page >= pages, children: "Next", onClick: () => props.onPageChange?.(page + 1) }), props.onDownload && Button({ type: "button", size: "sm", children: "Download", onClick: () => props.onDownload?.(props.document) }))), h("div", { class: "hu-document-viewer__frame", role: "document", "aria-label": props.document.name }, props.document.kind === "image" && props.document.url
386
552
  ? h("img", { src: props.document.url, alt: props.document.name, loading: "lazy" })
387
553
  : h("div", { class: "hu-document-viewer__preview" }, props.document.content ?? `${props.document.name}\n${props.document.kind ?? "unknown"} preview`)));
388
554
  }
@@ -394,6 +560,15 @@ function formatMetadata(metadata) {
394
560
  return "";
395
561
  return Object.entries(metadata).map(([key, value]) => `${key}: ${String(value)}`).join(" · ");
396
562
  }
563
+ function getPermissionActionId(action) {
564
+ return action.id ?? `hu-permission-action-${toDomId(action.key)}`;
565
+ }
566
+ function getPermissionResourceId(resource) {
567
+ return resource.id ?? `hu-permission-resource-${toDomId(resource.key)}`;
568
+ }
569
+ function toDomId(value) {
570
+ return value.toLowerCase().replace(/[^a-z0-9_-]+/g, "-").replace(/^-+|-+$/g, "") || "value";
571
+ }
397
572
  function initials(name) {
398
573
  return name.split(" ").slice(0, 2).map((part) => part[0]?.toUpperCase() ?? "").join("") || "?";
399
574
  }
@@ -8,8 +8,8 @@ export { Textarea } from "./Textarea/index.js";
8
8
  export type { TextareaProps } from "./Textarea/index.js";
9
9
  export { Checkbox } from "./Checkbox/index.js";
10
10
  export type { CheckboxProps } from "./Checkbox/index.js";
11
- export { Radio } from "./Radio/index.js";
12
- export type { RadioProps } from "./Radio/index.js";
11
+ export { Radio, RadioGroup } from "./Radio/index.js";
12
+ export type { RadioGroupOption, RadioGroupProps, RadioProps } from "./Radio/index.js";
13
13
  export { Switch } from "./Switch/index.js";
14
14
  export type { SwitchProps } from "./Switch/index.js";
15
15
  export { Select } from "./Select/index.js";
@@ -46,22 +46,26 @@ export { TreeView } from "./TreeView/index.js";
46
46
  export type { TreeViewItem, TreeViewProps } from "./TreeView/index.js";
47
47
  export { Navbar } from "./Navbar/index.js";
48
48
  export type { NavLink, NavbarProps } from "./Navbar/index.js";
49
+ export { NestedNavbar } from "./NestedNavbar/index.js";
50
+ export type { NestedNavItem, NavChildItem, NavbarMobileVariant, NestedNavbarProps } from "./NestedNavbar/index.js";
49
51
  export { Sidebar } from "./Sidebar/index.js";
50
- export type { SidebarItem, SidebarSection, SidebarProps } from "./Sidebar/index.js";
52
+ export type { SidebarItem, SidebarSection, SidebarMobileMode, SidebarPosition, SidebarCloseReason, SidebarCloseButtonRenderer, SidebarProps } from "./Sidebar/index.js";
53
+ export { NestedSidebar } from "./NestedSidebar/index.js";
54
+ export type { NestedSidebarItem, NestedSidebarChildItem, NestedSidebarSection, NestedSidebarMobileVariant, NestedSidebarPosition, NestedSidebarProps } from "./NestedSidebar/index.js";
51
55
  export { DataTable } from "./DataTable/index.js";
52
- export type { TableColumn, DataTableProps } from "./DataTable/index.js";
56
+ export type { DataTableRowEvent, DataTableSelectAllEvent, DataTableSelectionEvent, DataTableSortEvent, TableColumn, DataTableProps } from "./DataTable/index.js";
53
57
  export { Dialog } from "./Dialog/index.js";
54
- export type { DialogProps } from "./Dialog/index.js";
58
+ export type { DialogCloseButtonRenderer, DialogCloseReason, DialogProps } from "./Dialog/index.js";
55
59
  export { Sheet } from "./Sheet/index.js";
56
- export type { SheetProps } from "./Sheet/index.js";
60
+ export type { SheetCloseButtonRenderer, SheetCloseReason, SheetProps } from "./Sheet/index.js";
57
61
  export { ToastRegion, useToast } from "./Toast/index.js";
58
62
  export type { ToastData, ToastType, ToastPosition } from "./Toast/index.js";
59
63
  export { Tooltip } from "./Tooltip/index.js";
60
64
  export type { TooltipProps } from "./Tooltip/index.js";
61
65
  export { Popover } from "./Popover/index.js";
62
- export type { PopoverProps } from "./Popover/index.js";
66
+ export type { PopoverCloseReason, PopoverProps } from "./Popover/index.js";
63
67
  export { DropdownMenu } from "./DropdownMenu/index.js";
64
- export type { MenuItem as DropdownMenuItem, DropdownMenuProps } from "./DropdownMenu/index.js";
68
+ export type { MenuItem as DropdownMenuItem, DropdownMenuCloseReason, DropdownMenuProps } from "./DropdownMenu/index.js";
65
69
  export { FocusTrap } from "./FocusTrap/index.js";
66
70
  export type { FocusTrapProps } from "./FocusTrap/index.js";
67
71
  export { ClickAwayListener } from "./ClickAwayListener/index.js";
@@ -132,8 +136,8 @@ export { List, ListSubheader, ListItem, ListItemIcon, ListItemText } from "./Lis
132
136
  export type { ListSubheaderProps, ListProps, ListItemProps, ListItemIconProps, ListItemTextProps } from "./List/index.js";
133
137
  export { PageLayout } from "./PageLayout/index.js";
134
138
  export type { PageLayoutProps } from "./PageLayout/index.js";
135
- export { DashboardLayout } from "./DashboardLayout/index.js";
136
- export type { DashboardLayoutProps } from "./DashboardLayout/index.js";
139
+ export { AppShell, DashboardLayout } from "./DashboardLayout/index.js";
140
+ export type { AppShellProps, DashboardLayoutProps } from "./DashboardLayout/index.js";
137
141
  export { SplitPane } from "./SplitPane/index.js";
138
142
  export type { SplitPaneProps } from "./SplitPane/index.js";
139
143
  export { ResizablePanel } from "./ResizablePanel/index.js";
@@ -142,10 +146,14 @@ export { AppBar, Toolbar, ToolbarSpacer } from "./AppBar/index.js";
142
146
  export type { AppBarProps, AppBarPosition, AppBarColor, ToolbarProps } from "./AppBar/index.js";
143
147
  export { Backdrop } from "./Backdrop/index.js";
144
148
  export type { BackdropProps } from "./Backdrop/index.js";
149
+ export { Transition } from "./Transition/index.js";
150
+ export type { TransitionProps } from "./Transition/index.js";
151
+ export { TransitionGroup } from "./TransitionGroup/index.js";
152
+ export type { TransitionGroupProps } from "./TransitionGroup/index.js";
145
153
  export { Modal } from "./Modal/index.js";
146
154
  export type { ModalProps } from "./Modal/index.js";
147
155
  export { Drawer } from "./Drawer/index.js";
148
- export type { DrawerProps, DrawerAnchor, DrawerVariant, DrawerSize } from "./Drawer/index.js";
156
+ export type { DrawerProps, DrawerAnchor, DrawerVariant, DrawerSize, DrawerCloseReason, DrawerCloseButtonRenderer } from "./Drawer/index.js";
149
157
  export { SnackbarRegion, useSnackbar } from "./Snackbar/index.js";
150
158
  export type { SnackbarItem, SnackbarSeverity, SnackbarPosition, SnackbarRegionProps } from "./Snackbar/index.js";
151
159
  export { CircularProgress } from "./CircularProgress/index.js";
@@ -155,9 +163,9 @@ export type { LinearProgressProps, LinearProgressVariant, LinearProgressColor }
155
163
  export { BottomNavigation } from "./BottomNavigation/index.js";
156
164
  export type { BottomNavigationProps, BottomNavigationActionDef } from "./BottomNavigation/index.js";
157
165
  export { SpeedDial } from "./SpeedDial/index.js";
158
- export type { SpeedDialProps, SpeedDialAction, SpeedDialDirection } from "./SpeedDial/index.js";
166
+ export type { SpeedDialProps, SpeedDialAction, SpeedDialDirection, SpeedDialPosition, SpeedDialCloseReason } from "./SpeedDial/index.js";
159
167
  export { Menu, MenuList, MenuItem } from "./Menu/index.js";
160
- export type { MenuProps, MenuListProps, MenuItemProps, MenuItemDef, MenuPlacement } from "./Menu/index.js";
168
+ export type { MenuProps, MenuListProps, MenuItemProps, MenuItemDef, MenuPlacement, MenuCloseReason } from "./Menu/index.js";
161
169
  export { Collapse } from "./Collapse/index.js";
162
170
  export type { CollapseProps } from "./Collapse/index.js";
163
171
  export { Fade } from "./Fade/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ export { Label } from "./Label/index.js";
4
4
  export { Input } from "./Input/index.js";
5
5
  export { Textarea } from "./Textarea/index.js";
6
6
  export { Checkbox } from "./Checkbox/index.js";
7
- export { Radio } from "./Radio/index.js";
7
+ export { Radio, RadioGroup } from "./Radio/index.js";
8
8
  export { Switch } from "./Switch/index.js";
9
9
  export { Select } from "./Select/index.js";
10
10
  export { Spinner } from "./Spinner/index.js";
@@ -24,7 +24,9 @@ export { Stepper } from "./Stepper/index.js";
24
24
  export { Timeline } from "./Timeline/index.js";
25
25
  export { TreeView } from "./TreeView/index.js";
26
26
  export { Navbar } from "./Navbar/index.js";
27
+ export { NestedNavbar } from "./NestedNavbar/index.js";
27
28
  export { Sidebar } from "./Sidebar/index.js";
29
+ export { NestedSidebar } from "./NestedSidebar/index.js";
28
30
  export { DataTable } from "./DataTable/index.js";
29
31
  // Overlay components
30
32
  export { Dialog } from "./Dialog/index.js";
@@ -74,13 +76,16 @@ export { ImageList } from "./ImageList/index.js";
74
76
  export { List, ListSubheader, ListItem, ListItemIcon, ListItemText } from "./List/index.js";
75
77
  // Enterprise layout components
76
78
  export { PageLayout } from "./PageLayout/index.js";
77
- export { DashboardLayout } from "./DashboardLayout/index.js";
79
+ export { AppShell, DashboardLayout } from "./DashboardLayout/index.js";
78
80
  export { SplitPane } from "./SplitPane/index.js";
79
81
  export { ResizablePanel } from "./ResizablePanel/index.js";
80
82
  // App Bar
81
83
  export { AppBar, Toolbar, ToolbarSpacer } from "./AppBar/index.js";
82
84
  // Backdrop
83
85
  export { Backdrop } from "./Backdrop/index.js";
86
+ // Transition / TransitionGroup
87
+ export { Transition } from "./Transition/index.js";
88
+ export { TransitionGroup } from "./TransitionGroup/index.js";
84
89
  // Modal
85
90
  export { Modal } from "./Modal/index.js";
86
91
  // Drawer
@@ -1 +1 @@
1
- {"version":3,"file":"portal.d.ts","sourceRoot":"","sources":["../src/portal.ts"],"names":[],"mappings":"AACA,OAAO,EAAK,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAIjD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAgBtE"}
1
+ {"version":3,"file":"portal.d.ts","sourceRoot":"","sources":["../src/portal.ts"],"names":[],"mappings":"AACA,OAAO,EAAK,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAIjD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAmBtE"}
package/dist/portal.js CHANGED
@@ -6,6 +6,9 @@ export function renderInPortal(children, layer) {
6
6
  return h("span", { "data-hu-portal": layer }, children);
7
7
  }
8
8
  const root = document.createElement("div");
9
+ if (!root || !root.dataset || typeof document.body.appendChild !== "function") {
10
+ return h("span", { "data-hu-portal": layer }, children);
11
+ }
9
12
  root.className = "hu-portal-root";
10
13
  root.dataset.huPortal = layer;
11
14
  root.dataset.huPortalId = String(++portalId);