@ojiepermana/angular 0.1.0 → 21.0.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 (91) hide show
  1. package/README.md +41 -246
  2. package/chart/README.md +0 -0
  3. package/fesm2022/ojiepermana-angular-chart.mjs +3714 -0
  4. package/fesm2022/ojiepermana-angular-chart.mjs.map +1 -0
  5. package/fesm2022/ojiepermana-angular-component.mjs +3463 -0
  6. package/fesm2022/ojiepermana-angular-component.mjs.map +1 -0
  7. package/fesm2022/ojiepermana-angular-layout.mjs +272 -401
  8. package/fesm2022/ojiepermana-angular-layout.mjs.map +1 -1
  9. package/fesm2022/ojiepermana-angular-navigation.mjs +2225 -135
  10. package/fesm2022/ojiepermana-angular-navigation.mjs.map +1 -1
  11. package/fesm2022/ojiepermana-angular-theme.mjs +381 -1
  12. package/fesm2022/ojiepermana-angular-theme.mjs.map +1 -1
  13. package/fesm2022/ojiepermana-angular.mjs +15 -1
  14. package/fesm2022/ojiepermana-angular.mjs.map +1 -1
  15. package/package.json +49 -36
  16. package/theme/styles/etos.css +38 -0
  17. package/theme/styles/index.css +32 -8
  18. package/theme/styles/themes/brand/etos/color.css +21 -0
  19. package/theme/styles/themes/brand/etos/style.css +50 -0
  20. package/theme/styles/themes/library/_components.css +63 -0
  21. package/theme/styles/themes/library/_layers.css +15 -0
  22. package/theme/styles/themes/library/_material-overrides.css +254 -0
  23. package/theme/styles/themes/library/_tokens.css +54 -0
  24. package/theme/styles/themes/library/color/amber.css +18 -0
  25. package/theme/styles/themes/library/color/blue.css +23 -0
  26. package/theme/styles/themes/library/color/green.css +18 -0
  27. package/theme/styles/themes/library/color/index.css +9 -0
  28. package/theme/styles/themes/library/color/purple.css +18 -0
  29. package/theme/styles/themes/library/color/red.css +18 -0
  30. package/theme/styles/themes/library/style/brutal.css +47 -0
  31. package/theme/styles/themes/library/style/default.css +51 -0
  32. package/theme/styles/themes/library/style/index.css +8 -0
  33. package/theme/styles/themes/library/style/sharp.css +47 -0
  34. package/theme/styles/themes/library/style/soft.css +47 -0
  35. package/theme/styles/themes/mode/dark.css +20 -0
  36. package/theme/styles/themes/mode/index.css +6 -0
  37. package/theme/styles/themes/mode/light.css +24 -0
  38. package/theme/styles/themes/taildwind.css +109 -0
  39. package/types/ojiepermana-angular-chart.d.ts +1094 -0
  40. package/types/ojiepermana-angular-component.d.ts +1174 -0
  41. package/types/ojiepermana-angular-layout.d.ts +123 -76
  42. package/types/ojiepermana-angular-navigation.d.ts +257 -71
  43. package/types/ojiepermana-angular-theme.d.ts +170 -1
  44. package/types/ojiepermana-angular.d.ts +2 -1
  45. package/fesm2022/ojiepermana-angular-internal.mjs +0 -473
  46. package/fesm2022/ojiepermana-angular-internal.mjs.map +0 -1
  47. package/fesm2022/ojiepermana-angular-navigation-horizontal.mjs +0 -785
  48. package/fesm2022/ojiepermana-angular-navigation-horizontal.mjs.map +0 -1
  49. package/fesm2022/ojiepermana-angular-navigation-vertical.mjs +0 -1568
  50. package/fesm2022/ojiepermana-angular-navigation-vertical.mjs.map +0 -1
  51. package/fesm2022/ojiepermana-angular-shell.mjs +0 -14
  52. package/fesm2022/ojiepermana-angular-shell.mjs.map +0 -1
  53. package/fesm2022/ojiepermana-angular-theme-component.mjs +0 -235
  54. package/fesm2022/ojiepermana-angular-theme-component.mjs.map +0 -1
  55. package/fesm2022/ojiepermana-angular-theme-directive.mjs +0 -29
  56. package/fesm2022/ojiepermana-angular-theme-directive.mjs.map +0 -1
  57. package/fesm2022/ojiepermana-angular-theme-service.mjs +0 -241
  58. package/fesm2022/ojiepermana-angular-theme-service.mjs.map +0 -1
  59. package/layout/README.md +0 -144
  60. package/navigation/README.md +0 -215
  61. package/shell/README.md +0 -37
  62. package/styles/index.css +0 -2
  63. package/styles/resets.css +0 -22
  64. package/theme/README.md +0 -379
  65. package/theme/styles/adapters/material-ui/index.css +0 -205
  66. package/theme/styles/layout/horizontal.css +0 -109
  67. package/theme/styles/layout/index.css +0 -19
  68. package/theme/styles/layout/vertical.css +0 -75
  69. package/theme/styles/modes/dark.css +0 -84
  70. package/theme/styles/presets/colors/blue.css +0 -45
  71. package/theme/styles/presets/colors/brand.css +0 -52
  72. package/theme/styles/presets/colors/cyan.css +0 -45
  73. package/theme/styles/presets/colors/green.css +0 -45
  74. package/theme/styles/presets/colors/index.css +0 -7
  75. package/theme/styles/presets/colors/orange.css +0 -45
  76. package/theme/styles/presets/colors/purple.css +0 -45
  77. package/theme/styles/presets/colors/red.css +0 -45
  78. package/theme/styles/presets/styles/flat.css +0 -61
  79. package/theme/styles/presets/styles/glass.css +0 -28
  80. package/theme/styles/presets/styles/index.css +0 -2
  81. package/theme/styles/roles/index.css +0 -67
  82. package/theme/styles/tokens/foundation.css +0 -136
  83. package/theme/styles/tokens/semantic.css +0 -87
  84. package/theme/styles/utilities/index.css +0 -88
  85. package/types/ojiepermana-angular-internal.d.ts +0 -89
  86. package/types/ojiepermana-angular-navigation-horizontal.d.ts +0 -77
  87. package/types/ojiepermana-angular-navigation-vertical.d.ts +0 -260
  88. package/types/ojiepermana-angular-shell.d.ts +0 -12
  89. package/types/ojiepermana-angular-theme-component.d.ts +0 -46
  90. package/types/ojiepermana-angular-theme-directive.d.ts +0 -10
  91. package/types/ojiepermana-angular-theme-service.d.ts +0 -68
@@ -1 +0,0 @@
1
- {"version":3,"file":"ojiepermana-angular-internal.mjs","sources":["../../../projects/library/internal/src/lucide-config.provider.ts","../../../projects/library/internal/src/local-storage-state.ts","../../../projects/library/internal/src/navigation/navigation-item-content.ts","../../../projects/library/internal/src/navigation/navigation-tree.utils.ts","../../../projects/library/internal/src/navigation/navigation-tree-outlet.ts","../../../projects/library/internal/public-api.ts","../../../projects/library/internal/ojiepermana-angular-internal.ts"],"sourcesContent":["import { provideLucideConfig } from '@lucide/angular';\n\nexport const libraryLucideConfigProvider = provideLucideConfig({\n absoluteStrokeWidth: true,\n strokeWidth: 1.35,\n});\n","interface StorageLike {\n getItem(key: string): string | null;\n setItem(key: string, value: string): void;\n removeItem(key: string): void;\n}\n\ninterface LocalStorageStateAdapterConfig<Axis extends string> {\n readonly isBrowser: boolean;\n readonly storage: StorageLike | null;\n readonly keys: Record<Axis, string>;\n readonly legacyPrefix: string;\n}\n\nexport class LocalStorageStateAdapter<Axis extends string> {\n constructor(private readonly config: LocalStorageStateAdapterConfig<Axis>) {}\n\n clear(axis: Axis): void {\n if (!this.config.isBrowser || !this.config.storage) {\n return;\n }\n\n this.config.storage.removeItem(this.key(axis));\n this.config.storage.removeItem(this.legacyKey(axis));\n }\n\n persist(axis: Axis, value: string): void {\n if (!this.config.isBrowser || !this.config.storage) {\n return;\n }\n\n this.config.storage.setItem(this.key(axis), value);\n this.config.storage.removeItem(this.legacyKey(axis));\n }\n\n read<T extends string>(axis: Axis, fallback: T, isValid: (value: string) => value is T): T {\n if (!this.config.isBrowser || !this.config.storage) {\n return fallback;\n }\n\n const storedValue = this.config.storage.getItem(this.key(axis));\n\n if (storedValue && isValid(storedValue)) {\n return storedValue;\n }\n\n const legacyValue = this.config.storage.getItem(this.legacyKey(axis));\n\n if (legacyValue && isValid(legacyValue)) {\n this.config.storage.setItem(this.key(axis), legacyValue);\n this.config.storage.removeItem(this.legacyKey(axis));\n return legacyValue;\n }\n\n return fallback;\n }\n\n private key(axis: Axis): string {\n return this.config.keys[axis];\n }\n\n private legacyKey(axis: Axis): string {\n return `${this.config.legacyPrefix}:${axis}`;\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, ViewEncapsulation } from '@angular/core';\nimport { LucideDynamicIcon, icons as lucideIcons, type LucideIcon } from '@lucide/angular';\nimport { NavigationItem } from '@ojiepermana/angular/navigation';\n\nimport { libraryLucideConfigProvider } from '../lucide-config.provider';\n\ntype NavigationItemContentVariant = 'horizontal' | 'vertical' | 'vertical-group';\n\nconst navigationLucideIconRegistry = buildNavigationLucideIconRegistry();\n\nfunction buildNavigationLucideIconRegistry(): ReadonlyMap<string, LucideIcon> {\n const registry = new Map<string, LucideIcon>();\n\n for (const icon of Object.values(lucideIcons) as LucideIcon[]) {\n registry.set(icon.icon.name, icon);\n\n for (const alias of icon.icon.aliases ?? []) {\n registry.set(alias, icon);\n }\n }\n\n return registry;\n}\n\n@Component({\n selector: 'navigation-item-content',\n template: `\n @if (variant() === 'horizontal') {\n <span class=\"horizontal-navigation-item-body\">\n <span\n class=\"horizontal-navigation-item-leading\"\n [class.horizontal-navigation-item-leading--nested]=\"level() > 0\">\n @if (resolvedIcon(); as icon) {\n <svg\n [lucideIcon]=\"icon\"\n [absoluteStrokeWidth]=\"true\"\n [attr.class]=\"horizontalIconClass()\"\n aria-hidden=\"true\"></svg>\n }\n <span [attr.class]=\"horizontalTitleClass()\">\n {{ item().title }}\n </span>\n </span>\n\n @if (item().badge?.title) {\n <span [attr.class]=\"horizontalBadgeClass()\">\n {{ item().badge?.title }}\n </span>\n }\n </span>\n } @else {\n <span class=\"kit-navigation-item-content\">\n @if (resolvedIcon(); as icon) {\n <svg\n [lucideIcon]=\"icon\"\n [absoluteStrokeWidth]=\"true\"\n [attr.class]=\"verticalIconClass()\"\n [size]=\"18\"\n aria-hidden=\"true\"></svg>\n }\n\n <div class=\"kit-navigation-item-title-wrapper\">\n <div [class]=\"titleContainerClass()\">\n <span [attr.class]=\"titleClass()\">\n {{ item().title }}\n </span>\n </div>\n\n @if (item().subtitle) {\n <div [class]=\"subtitleContainerClass()\">\n <span [attr.class]=\"subtitleClass()\">\n {{ item().subtitle }}\n </span>\n </div>\n }\n </div>\n\n @if (item().badge?.title) {\n <div class=\"kit-navigation-item-badge\">\n <div [attr.class]=\"verticalBadgeClass()\">\n {{ item().badge?.title }}\n </div>\n </div>\n }\n </span>\n }\n `,\n styles: [\n `\n :host {\n display: contents;\n }\n\n .kit-navigation-item-content {\n display: flex;\n align-items: center;\n width: 100%;\n min-width: 0;\n }\n\n .kit-navigation-item-title-wrapper {\n display: flex;\n flex: 1 1 auto;\n min-width: 0;\n flex-direction: column;\n }\n\n .kit-navigation-item-title,\n .kit-navigation-group-title,\n .kit-navigation-item-subtitle,\n .kit-navigation-group-subtitle {\n min-width: 0;\n }\n `,\n ],\n imports: [LucideDynamicIcon],\n providers: [libraryLucideConfigProvider],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class NavigationItemContent {\n item = input.required<NavigationItem>();\n level = input(0);\n variant = input<NavigationItemContentVariant>('horizontal');\n\n protected readonly resolvedIcon = computed(() => {\n const iconName = this.item().icon;\n return iconName ? (navigationLucideIconRegistry.get(iconName) ?? null) : null;\n });\n\n protected readonly horizontalIconClass = computed(() =>\n this.joinClasses('horizontal-navigation-item-icon', this.item().classes?.icon),\n );\n protected readonly verticalIconClass = computed(() =>\n this.joinClasses('kit-navigation-item-icon', this.item().classes?.icon),\n );\n protected readonly horizontalTitleClass = computed(() =>\n this.joinClasses('horizontal-navigation-item-label', this.item().classes?.title),\n );\n protected readonly titleClass = computed(() => this.item().classes?.title ?? null);\n protected readonly subtitleClass = computed(() => this.item().classes?.subtitle ?? null);\n protected readonly horizontalBadgeClass = computed(() =>\n this.joinClasses(\n 'horizontal-navigation-item-badge',\n !this.item().badge?.classes ? 'bg-primary text-primary-foreground' : null,\n this.item().badge?.classes,\n ),\n );\n protected readonly verticalBadgeClass = computed(() =>\n this.joinClasses('kit-navigation-item-badge-content', this.item().badge?.classes),\n );\n protected readonly titleContainerClass = computed(() =>\n this.variant() === 'vertical-group' ? 'kit-navigation-group-title' : 'kit-navigation-item-title',\n );\n protected readonly subtitleContainerClass = computed(() =>\n this.variant() === 'vertical-group' ? 'kit-navigation-group-subtitle' : 'kit-navigation-item-subtitle',\n );\n\n private joinClasses(...classNames: Array<string | null | undefined | false>): string | null {\n const value = classNames.filter((className): className is string => !!className).join(' ');\n return value || null;\n }\n}\n","import { NavigationItem, getNavigationChildren, hasNavigationChildren } from '@ojiepermana/angular/navigation';\n\nexport type NavigationExpandedItemsByParent = Record<string, string>;\n\nexport function trackNavigationTreeItem(index: number, item: NavigationItem): string | number | undefined {\n return item.id || item.title || index;\n}\n\nexport function getNavigationTreePathKey(parentKey: string, item: NavigationItem): string {\n const key = item.id || item.title;\n if (!key) {\n return parentKey;\n }\n\n return `${parentKey}/${key}`;\n}\n\nexport function isNavigationTreeItemExpanded(\n expandedByParent: NavigationExpandedItemsByParent,\n parentKey: string,\n item: NavigationItem,\n): boolean {\n return expandedByParent[parentKey] === getNavigationTreePathKey(parentKey, item);\n}\n\nexport function toggleNavigationTreeItemExpanded(\n expandedByParent: NavigationExpandedItemsByParent,\n parentKey: string,\n item: NavigationItem,\n): NavigationExpandedItemsByParent {\n const key = getNavigationTreePathKey(parentKey, item);\n\n if (expandedByParent[parentKey] === key) {\n const next = { ...expandedByParent };\n delete next[parentKey];\n return next;\n }\n\n return {\n ...expandedByParent,\n [parentKey]: key,\n };\n}\n\nexport function hasActiveNavigationDescendant(\n item: NavigationItem,\n isItemActive: (item: NavigationItem) => boolean,\n): boolean {\n for (const child of getNavigationChildren(item)) {\n if (isItemActive(child)) {\n return true;\n }\n\n if (hasNavigationChildren(child) && hasActiveNavigationDescendant(child, isItemActive)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function isNavigationTreeDescendant(parent: NavigationItem, item: NavigationItem): boolean {\n for (const child of getNavigationChildren(parent)) {\n if (child === item) {\n return true;\n }\n\n if (hasNavigationChildren(child) && isNavigationTreeDescendant(child, item)) {\n return true;\n }\n }\n\n return false;\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, forwardRef, input, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { NavigationItem, hasNavigationChildren, shouldRenderNavigationItem } from '@ojiepermana/angular/navigation';\n\nimport { getNavigationTreePathKey, trackNavigationTreeItem } from './navigation-tree.utils';\n\nexport type NavigationTreeTemplateData = Record<string, unknown>;\n\nexport interface NavigationTreeItemContext {\n $implicit: NavigationItem;\n level: number;\n parentKey: string;\n isLast: boolean;\n data: NavigationTreeTemplateData | null;\n}\n\n@Component({\n selector: 'navigation-tree-outlet',\n template: `\n @for (child of items(); track trackItem($index, child); let isLast = $last) {\n @if (shouldRender(child)) {\n @switch (child.type) {\n @case ('basic') {\n <ng-container\n [ngTemplateOutlet]=\"leafTemplate()\"\n [ngTemplateOutletContext]=\"templateContext(child, isLast)\"></ng-container>\n }\n\n @case ('aside') {\n @if (hasChildren(child)) {\n <ng-container\n [ngTemplateOutlet]=\"branchTemplate()\"\n [ngTemplateOutletContext]=\"templateContext(child, isLast)\"></ng-container>\n } @else {\n <ng-container\n [ngTemplateOutlet]=\"leafTemplate()\"\n [ngTemplateOutletContext]=\"templateContext(child, isLast)\"></ng-container>\n }\n }\n\n @case ('collapsable') {\n @if (hasChildren(child)) {\n <ng-container\n [ngTemplateOutlet]=\"branchTemplate()\"\n [ngTemplateOutletContext]=\"templateContext(child, isLast)\"></ng-container>\n } @else {\n <ng-container\n [ngTemplateOutlet]=\"leafTemplate()\"\n [ngTemplateOutletContext]=\"templateContext(child, isLast)\"></ng-container>\n }\n }\n\n @case ('group') {\n @if (hasChildren(child)) {\n <ng-container\n [ngTemplateOutlet]=\"groupTemplate()\"\n [ngTemplateOutletContext]=\"templateContext(child, isLast)\"></ng-container>\n <navigation-tree-outlet\n [items]=\"child.children || []\"\n [level]=\"level() + 1\"\n [parentKey]=\"resolveParentKey(parentKey(), child)\"\n [data]=\"data()\"\n [branchTemplate]=\"branchTemplate()\"\n [leafTemplate]=\"leafTemplate()\"\n [groupTemplate]=\"groupTemplate()\"\n [dividerTemplate]=\"dividerTemplate()\"\n [spacerTemplate]=\"spacerTemplate()\"\n [trackByFn]=\"trackByFn()\"\n [shouldRenderItemFn]=\"shouldRenderItemFn()\"\n [hasChildrenFn]=\"hasChildrenFn()\"\n [resolveParentKeyFn]=\"resolveParentKeyFn()\" />\n }\n }\n\n @case ('divider') {\n @if (dividerTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"dividerTemplate()\"\n [ngTemplateOutletContext]=\"templateContext(child, isLast)\"></ng-container>\n }\n }\n\n @case ('spacer') {\n @if (spacerTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"spacerTemplate()\"\n [ngTemplateOutletContext]=\"templateContext(child, isLast)\"></ng-container>\n }\n }\n\n @default {\n <ng-container\n [ngTemplateOutlet]=\"leafTemplate()\"\n [ngTemplateOutletContext]=\"templateContext(child, isLast)\"></ng-container>\n }\n }\n }\n }\n `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n imports: [NgTemplateOutlet, forwardRef(() => NavigationTreeOutlet)],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class NavigationTreeOutlet {\n items = input<NavigationItem[]>([]);\n level = input(0);\n parentKey = input('root');\n data = input<NavigationTreeTemplateData | null>(null);\n\n branchTemplate = input.required<TemplateRef<NavigationTreeItemContext>>();\n leafTemplate = input.required<TemplateRef<NavigationTreeItemContext>>();\n groupTemplate = input.required<TemplateRef<NavigationTreeItemContext>>();\n dividerTemplate = input<TemplateRef<NavigationTreeItemContext> | null>(null);\n spacerTemplate = input<TemplateRef<NavigationTreeItemContext> | null>(null);\n\n trackByFn = input<(index: number, item: NavigationItem) => string | number | undefined>(trackNavigationTreeItem);\n shouldRenderItemFn = input<(item: NavigationItem) => boolean>(shouldRenderNavigationItem);\n hasChildrenFn = input<(item: NavigationItem) => boolean>(hasNavigationChildren);\n resolveParentKeyFn = input<(parentKey: string, item: NavigationItem) => string>(getNavigationTreePathKey);\n\n trackItem(index: number, item: NavigationItem): string | number | undefined {\n return this.trackByFn()(index, item);\n }\n\n shouldRender(item: NavigationItem): boolean {\n return this.shouldRenderItemFn()(item);\n }\n\n hasChildren(item: NavigationItem): boolean {\n return this.hasChildrenFn()(item);\n }\n\n resolveParentKey(parentKey: string, item: NavigationItem): string {\n return this.resolveParentKeyFn()(parentKey, item);\n }\n\n templateContext(item: NavigationItem, isLast: boolean): NavigationTreeItemContext {\n return {\n $implicit: item,\n level: this.level(),\n parentKey: this.parentKey(),\n isLast,\n data: this.data(),\n };\n }\n}\n","/* Internal composition utilities for library entrypoints. Not part of the supported consumer API. */\n\nexport { libraryLucideConfigProvider } from './src/lucide-config.provider';\nexport { LocalStorageStateAdapter } from './src/local-storage-state';\nexport { NavigationItemContent } from './src/navigation/navigation-item-content';\nexport {\n NavigationTreeOutlet,\n type NavigationTreeItemContext,\n type NavigationTreeTemplateData,\n} from './src/navigation/navigation-tree-outlet';\nexport {\n getNavigationTreePathKey,\n hasActiveNavigationDescendant,\n isNavigationTreeDescendant,\n isNavigationTreeItemExpanded,\n toggleNavigationTreeItemExpanded,\n trackNavigationTreeItem,\n type NavigationExpandedItemsByParent,\n} from './src/navigation/navigation-tree.utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["lucideIcons"],"mappings":"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"}