le-kit 0.2.0 → 0.2.2

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 (35) hide show
  1. package/dist/cjs/le-kit.cjs.js +1 -1
  2. package/dist/cjs/le-navigation.cjs.entry.js +115 -37
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/collection/components/le-navigation/le-navigation.css +4 -0
  5. package/dist/collection/components/le-navigation/le-navigation.js +179 -37
  6. package/dist/collection/components/le-navigation/le-navigation.js.map +1 -1
  7. package/dist/collection/dist/components/assets/custom-elements.json +534 -386
  8. package/dist/collection/dist/components/assets/icons/ellipsis-horizontal.json +14 -0
  9. package/dist/collection/dist/components/assets/icons/ellipsis-vertical.json +14 -0
  10. package/dist/collection/dist/components/assets/icons/hamburger.json +14 -0
  11. package/dist/collection/types/options.js.map +1 -1
  12. package/dist/components/assets/custom-elements.json +534 -386
  13. package/dist/components/assets/icons/ellipsis-horizontal.json +14 -0
  14. package/dist/components/assets/icons/ellipsis-vertical.json +14 -0
  15. package/dist/components/assets/icons/hamburger.json +14 -0
  16. package/dist/components/le-navigation.js +119 -37
  17. package/dist/components/le-navigation.js.map +1 -1
  18. package/dist/docs.json +126 -8
  19. package/dist/esm/le-kit.js +1 -1
  20. package/dist/esm/le-navigation.entry.js +115 -37
  21. package/dist/esm/le-navigation.entry.js.map +1 -1
  22. package/dist/esm/loader.js +1 -1
  23. package/dist/le-kit/dist/components/assets/custom-elements.json +534 -386
  24. package/dist/le-kit/dist/components/assets/icons/ellipsis-horizontal.json +14 -0
  25. package/dist/le-kit/dist/components/assets/icons/ellipsis-vertical.json +14 -0
  26. package/dist/le-kit/dist/components/assets/icons/hamburger.json +14 -0
  27. package/dist/le-kit/le-kit.esm.js +1 -1
  28. package/dist/le-kit/p-c08fcb00.entry.js +2 -0
  29. package/dist/le-kit/p-c08fcb00.entry.js.map +1 -0
  30. package/dist/types/components/le-navigation/le-navigation.d.ts +21 -0
  31. package/dist/types/components.d.ts +32 -2
  32. package/dist/types/types/options.d.ts +5 -0
  33. package/package.json +1 -1
  34. package/dist/le-kit/p-8c5a8f1e.entry.js +0 -2
  35. package/dist/le-kit/p-8c5a8f1e.entry.js.map +0 -1
@@ -795,6 +795,139 @@
795
795
  }
796
796
  ]
797
797
  },
798
+ {
799
+ "kind": "javascript-module",
800
+ "path": "src/components/le-card/le-card.tsx",
801
+ "declarations": [
802
+ {
803
+ "kind": "class",
804
+ "description": "A flexible card component with header, content, and footer slots.\n\nThe card uses le-slot wrappers for each slot area. In admin mode,\nle-slot shows placeholders for CMS editing. In default mode,\nle-slot acts as a transparent passthrough.",
805
+ "name": "LeCard",
806
+ "cssProperties": [
807
+ {
808
+ "description": "Card background color",
809
+ "name": "--le-card-bg"
810
+ },
811
+ {
812
+ "description": "Card border radius",
813
+ "name": "--le-card-border-radius"
814
+ },
815
+ {
816
+ "description": "Card box shadow",
817
+ "name": "--le-card-shadow"
818
+ },
819
+ {
820
+ "description": "Card content padding",
821
+ "name": "--le-card-padding"
822
+ }
823
+ ],
824
+ "cssParts": [
825
+ {
826
+ "description": "The main card container",
827
+ "name": "card"
828
+ },
829
+ {
830
+ "description": "The card header section",
831
+ "name": "header"
832
+ },
833
+ {
834
+ "description": "The card content section",
835
+ "name": "content"
836
+ },
837
+ {
838
+ "description": "The card footer section",
839
+ "name": "footer"
840
+ }
841
+ ],
842
+ "slots": [
843
+ {
844
+ "description": "Card header content (title, actions)",
845
+ "name": "header"
846
+ },
847
+ {
848
+ "description": "Default slot for main card content",
849
+ "name": ""
850
+ },
851
+ {
852
+ "description": "Card footer content (buttons, links)",
853
+ "name": "footer"
854
+ }
855
+ ],
856
+ "members": [
857
+ {
858
+ "kind": "field",
859
+ "name": "el",
860
+ "type": {
861
+ "text": "HTMLElement"
862
+ }
863
+ },
864
+ {
865
+ "kind": "field",
866
+ "name": "variant",
867
+ "type": {
868
+ "text": "'default' | 'outlined' | 'elevated'"
869
+ },
870
+ "default": "'default'",
871
+ "description": "Card variant style"
872
+ },
873
+ {
874
+ "kind": "field",
875
+ "name": "interactive",
876
+ "type": {
877
+ "text": "boolean"
878
+ },
879
+ "default": "false",
880
+ "description": "Whether the card is interactive (clickable)"
881
+ },
882
+ {
883
+ "kind": "method",
884
+ "name": "render"
885
+ }
886
+ ],
887
+ "attributes": [
888
+ {
889
+ "name": "variant",
890
+ "fieldName": "variant",
891
+ "default": "'default'",
892
+ "description": "Card variant style",
893
+ "type": {
894
+ "text": "'default' | 'outlined' | 'elevated'"
895
+ }
896
+ },
897
+ {
898
+ "name": "interactive",
899
+ "fieldName": "interactive",
900
+ "default": "false",
901
+ "description": "Whether the card is interactive (clickable)",
902
+ "type": {
903
+ "text": "boolean"
904
+ }
905
+ }
906
+ ],
907
+ "tagName": "le-card",
908
+ "events": [],
909
+ "customElement": true
910
+ }
911
+ ],
912
+ "exports": [
913
+ {
914
+ "kind": "js",
915
+ "name": "LeCard",
916
+ "declaration": {
917
+ "name": "LeCard",
918
+ "module": "src/components/le-card/le-card.tsx"
919
+ }
920
+ },
921
+ {
922
+ "kind": "custom-element-definition",
923
+ "name": "le-card",
924
+ "declaration": {
925
+ "name": "LeCard",
926
+ "module": "src/components/le-card/le-card.tsx"
927
+ }
928
+ }
929
+ ]
930
+ },
798
931
  {
799
932
  "kind": "javascript-module",
800
933
  "path": "src/components/le-collapse/le-collapse.tsx",
@@ -978,139 +1111,6 @@
978
1111
  }
979
1112
  ]
980
1113
  },
981
- {
982
- "kind": "javascript-module",
983
- "path": "src/components/le-card/le-card.tsx",
984
- "declarations": [
985
- {
986
- "kind": "class",
987
- "description": "A flexible card component with header, content, and footer slots.\n\nThe card uses le-slot wrappers for each slot area. In admin mode,\nle-slot shows placeholders for CMS editing. In default mode,\nle-slot acts as a transparent passthrough.",
988
- "name": "LeCard",
989
- "cssProperties": [
990
- {
991
- "description": "Card background color",
992
- "name": "--le-card-bg"
993
- },
994
- {
995
- "description": "Card border radius",
996
- "name": "--le-card-border-radius"
997
- },
998
- {
999
- "description": "Card box shadow",
1000
- "name": "--le-card-shadow"
1001
- },
1002
- {
1003
- "description": "Card content padding",
1004
- "name": "--le-card-padding"
1005
- }
1006
- ],
1007
- "cssParts": [
1008
- {
1009
- "description": "The main card container",
1010
- "name": "card"
1011
- },
1012
- {
1013
- "description": "The card header section",
1014
- "name": "header"
1015
- },
1016
- {
1017
- "description": "The card content section",
1018
- "name": "content"
1019
- },
1020
- {
1021
- "description": "The card footer section",
1022
- "name": "footer"
1023
- }
1024
- ],
1025
- "slots": [
1026
- {
1027
- "description": "Card header content (title, actions)",
1028
- "name": "header"
1029
- },
1030
- {
1031
- "description": "Default slot for main card content",
1032
- "name": ""
1033
- },
1034
- {
1035
- "description": "Card footer content (buttons, links)",
1036
- "name": "footer"
1037
- }
1038
- ],
1039
- "members": [
1040
- {
1041
- "kind": "field",
1042
- "name": "el",
1043
- "type": {
1044
- "text": "HTMLElement"
1045
- }
1046
- },
1047
- {
1048
- "kind": "field",
1049
- "name": "variant",
1050
- "type": {
1051
- "text": "'default' | 'outlined' | 'elevated'"
1052
- },
1053
- "default": "'default'",
1054
- "description": "Card variant style"
1055
- },
1056
- {
1057
- "kind": "field",
1058
- "name": "interactive",
1059
- "type": {
1060
- "text": "boolean"
1061
- },
1062
- "default": "false",
1063
- "description": "Whether the card is interactive (clickable)"
1064
- },
1065
- {
1066
- "kind": "method",
1067
- "name": "render"
1068
- }
1069
- ],
1070
- "attributes": [
1071
- {
1072
- "name": "variant",
1073
- "fieldName": "variant",
1074
- "default": "'default'",
1075
- "description": "Card variant style",
1076
- "type": {
1077
- "text": "'default' | 'outlined' | 'elevated'"
1078
- }
1079
- },
1080
- {
1081
- "name": "interactive",
1082
- "fieldName": "interactive",
1083
- "default": "false",
1084
- "description": "Whether the card is interactive (clickable)",
1085
- "type": {
1086
- "text": "boolean"
1087
- }
1088
- }
1089
- ],
1090
- "tagName": "le-card",
1091
- "events": [],
1092
- "customElement": true
1093
- }
1094
- ],
1095
- "exports": [
1096
- {
1097
- "kind": "js",
1098
- "name": "LeCard",
1099
- "declaration": {
1100
- "name": "LeCard",
1101
- "module": "src/components/le-card/le-card.tsx"
1102
- }
1103
- },
1104
- {
1105
- "kind": "custom-element-definition",
1106
- "name": "le-card",
1107
- "declaration": {
1108
- "name": "LeCard",
1109
- "module": "src/components/le-card/le-card.tsx"
1110
- }
1111
- }
1112
- ]
1113
- },
1114
1114
  {
1115
1115
  "kind": "javascript-module",
1116
1116
  "path": "src/components/le-checkbox/le-checkbox.tsx",
@@ -3731,6 +3731,16 @@
3731
3731
  "kind": "class",
3732
3732
  "description": "Navigation component with vertical (tree) and horizontal (menu) layouts.\n\n- Accepts items as `LeOption[]` or a JSON string.\n- Supports hierarchical items via `children`.\n- Supports persisted expansion via `open` on items.",
3733
3733
  "name": "LeNavigation",
3734
+ "slots": [
3735
+ {
3736
+ "description": "Custom trigger contents for the hamburger button",
3737
+ "name": "hamburger-trigger"
3738
+ },
3739
+ {
3740
+ "description": "Custom trigger contents for the \"More\" button",
3741
+ "name": "more-trigger"
3742
+ }
3743
+ ],
3734
3744
  "members": [
3735
3745
  {
3736
3746
  "kind": "field",
@@ -3754,7 +3764,7 @@
3754
3764
  "type": {
3755
3765
  "text": "'vertical' | 'horizontal'"
3756
3766
  },
3757
- "default": "'vertical'",
3767
+ "default": "'horizontal'",
3758
3768
  "description": "Layout orientation."
3759
3769
  },
3760
3770
  {
@@ -3775,6 +3785,33 @@
3775
3785
  "default": "'more'",
3776
3786
  "description": "Overflow behavior for horizontal, non-wrapping menus.\n- more: moves overflow items into a \"More\" popover\n- hamburger: turns the whole nav into a hamburger popover"
3777
3787
  },
3788
+ {
3789
+ "kind": "field",
3790
+ "name": "minVisibleItemsForMore",
3791
+ "type": {
3792
+ "text": "number"
3793
+ },
3794
+ "default": "2",
3795
+ "description": "Minimum number of visible top-level items required to use the \"More\" overflow.\nIf fewer would be visible, the navigation falls back to hamburger."
3796
+ },
3797
+ {
3798
+ "kind": "field",
3799
+ "name": "hamburgerAlign",
3800
+ "type": {
3801
+ "text": "'start' | 'end'"
3802
+ },
3803
+ "default": "'start'",
3804
+ "description": "Alignment of the hamburger trigger within the row."
3805
+ },
3806
+ {
3807
+ "kind": "field",
3808
+ "name": "activeUrl",
3809
+ "type": {
3810
+ "text": "string"
3811
+ },
3812
+ "default": "''",
3813
+ "description": "Active url for automatic selection."
3814
+ },
3778
3815
  {
3779
3816
  "kind": "field",
3780
3817
  "name": "searchable",
@@ -3847,6 +3884,15 @@
3847
3884
  "privacy": "private",
3848
3885
  "default": "false"
3849
3886
  },
3887
+ {
3888
+ "kind": "field",
3889
+ "name": "fallbackHamburger",
3890
+ "type": {
3891
+ "text": "boolean"
3892
+ },
3893
+ "privacy": "private",
3894
+ "default": "false"
3895
+ },
3850
3896
  {
3851
3897
  "kind": "field",
3852
3898
  "name": "submenuQueries",
@@ -3864,6 +3910,22 @@
3864
3910
  },
3865
3911
  "privacy": "private"
3866
3912
  },
3913
+ {
3914
+ "kind": "field",
3915
+ "name": "measureEl",
3916
+ "type": {
3917
+ "text": "HTMLElement | undefined"
3918
+ },
3919
+ "privacy": "private"
3920
+ },
3921
+ {
3922
+ "kind": "field",
3923
+ "name": "measureMoreEl",
3924
+ "type": {
3925
+ "text": "HTMLElement | undefined"
3926
+ },
3927
+ "privacy": "private"
3928
+ },
3867
3929
  {
3868
3930
  "kind": "field",
3869
3931
  "name": "topItemEls",
@@ -3890,6 +3952,22 @@
3890
3952
  },
3891
3953
  "privacy": "private"
3892
3954
  },
3955
+ {
3956
+ "kind": "field",
3957
+ "name": "hamburgerPopoverEl",
3958
+ "type": {
3959
+ "text": "HTMLLePopoverElement | undefined"
3960
+ },
3961
+ "privacy": "private"
3962
+ },
3963
+ {
3964
+ "kind": "field",
3965
+ "name": "morePopoverEl",
3966
+ "type": {
3967
+ "text": "HTMLLePopoverElement | undefined"
3968
+ },
3969
+ "privacy": "private"
3970
+ },
3893
3971
  {
3894
3972
  "kind": "field",
3895
3973
  "name": "resizeObserver",
@@ -3906,6 +3984,31 @@
3906
3984
  },
3907
3985
  "privacy": "private"
3908
3986
  },
3987
+ {
3988
+ "kind": "method",
3989
+ "name": "partFromOptionPart",
3990
+ "privacy": "private",
3991
+ "return": {
3992
+ "type": {
3993
+ "text": "string"
3994
+ }
3995
+ },
3996
+ "parameters": [
3997
+ {
3998
+ "name": "base",
3999
+ "type": {
4000
+ "text": "string"
4001
+ }
4002
+ },
4003
+ {
4004
+ "name": "part",
4005
+ "optional": true,
4006
+ "type": {
4007
+ "text": "string"
4008
+ }
4009
+ }
4010
+ ]
4011
+ },
3909
4012
  {
3910
4013
  "kind": "method",
3911
4014
  "name": "handleLayoutInputsChange"
@@ -4110,27 +4213,45 @@
4110
4213
  },
4111
4214
  {
4112
4215
  "kind": "method",
4113
- "name": "getTopLevelIds",
4216
+ "name": "getTopLevelIds",
4217
+ "privacy": "private",
4218
+ "return": {
4219
+ "type": {
4220
+ "text": "string[]"
4221
+ }
4222
+ },
4223
+ "parameters": [
4224
+ {
4225
+ "name": "items",
4226
+ "type": {
4227
+ "text": "LeOption[]"
4228
+ }
4229
+ }
4230
+ ]
4231
+ },
4232
+ {
4233
+ "kind": "method",
4234
+ "name": "computeOverflow",
4235
+ "privacy": "private"
4236
+ },
4237
+ {
4238
+ "kind": "method",
4239
+ "name": "computeOverflowMoreByWrap",
4114
4240
  "privacy": "private",
4115
4241
  "return": {
4116
4242
  "type": {
4117
- "text": "string[]"
4243
+ "text": "string[] | null"
4118
4244
  }
4119
4245
  },
4120
4246
  "parameters": [
4121
4247
  {
4122
- "name": "items",
4248
+ "name": "availableWidth",
4123
4249
  "type": {
4124
- "text": "LeOption[]"
4250
+ "text": "number"
4125
4251
  }
4126
4252
  }
4127
4253
  ]
4128
4254
  },
4129
- {
4130
- "kind": "method",
4131
- "name": "computeOverflow",
4132
- "privacy": "private"
4133
- },
4134
4255
  {
4135
4256
  "kind": "method",
4136
4257
  "name": "renderHorizontalMeasureItem",
@@ -4162,7 +4283,7 @@
4162
4283
  }
4163
4284
  },
4164
4285
  {
4165
- "name": "{\n depth,\n pathPrefix,\n autoOpenIds,\n searchable,\n searchQuery,\n searchPlaceholder,\n emptyText,\n submenuId,\n }",
4286
+ "name": "{\n depth,\n pathPrefix,\n autoOpenIds,\n searchable,\n searchQuery,\n searchPlaceholder,\n emptyText,\n submenuId,\n closePopover,\n }",
4166
4287
  "type": {
4167
4288
  "text": "VerticalListRenderOptions"
4168
4289
  }
@@ -4211,7 +4332,7 @@
4211
4332
  {
4212
4333
  "name": "orientation",
4213
4334
  "fieldName": "orientation",
4214
- "default": "'vertical'",
4335
+ "default": "'horizontal'",
4215
4336
  "description": "Layout orientation.",
4216
4337
  "type": {
4217
4338
  "text": "'vertical' | 'horizontal'"
@@ -4235,6 +4356,33 @@
4235
4356
  "text": "'more' | 'hamburger'"
4236
4357
  }
4237
4358
  },
4359
+ {
4360
+ "name": "min-visible-items-for-more",
4361
+ "fieldName": "minVisibleItemsForMore",
4362
+ "default": "2",
4363
+ "description": "Minimum number of visible top-level items required to use the \"More\" overflow.\nIf fewer would be visible, the navigation falls back to hamburger.",
4364
+ "type": {
4365
+ "text": "number"
4366
+ }
4367
+ },
4368
+ {
4369
+ "name": "hamburger-align",
4370
+ "fieldName": "hamburgerAlign",
4371
+ "default": "'start'",
4372
+ "description": "Alignment of the hamburger trigger within the row.",
4373
+ "type": {
4374
+ "text": "'start' | 'end'"
4375
+ }
4376
+ },
4377
+ {
4378
+ "name": "active-url",
4379
+ "fieldName": "activeUrl",
4380
+ "default": "''",
4381
+ "description": "Active url for automatic selection.",
4382
+ "type": {
4383
+ "text": "string"
4384
+ }
4385
+ },
4238
4386
  {
4239
4387
  "name": "searchable",
4240
4388
  "fieldName": "searchable",
@@ -8530,36 +8678,263 @@
8530
8678
  "type": {
8531
8679
  "text": "boolean"
8532
8680
  }
8533
- }
8534
- ],
8535
- "tagName": "le-tab-bar",
8536
- "events": [
8681
+ }
8682
+ ],
8683
+ "tagName": "le-tab-bar",
8684
+ "events": [
8685
+ {
8686
+ "name": "leTabChange",
8687
+ "type": {
8688
+ "text": "EventEmitter<LeOptionSelectDetail>"
8689
+ },
8690
+ "description": "Emitted when the selected tab changes."
8691
+ }
8692
+ ],
8693
+ "customElement": true
8694
+ }
8695
+ ],
8696
+ "exports": [
8697
+ {
8698
+ "kind": "js",
8699
+ "name": "LeTabBar",
8700
+ "declaration": {
8701
+ "name": "LeTabBar",
8702
+ "module": "src/components/le-tab-bar/le-tab-bar.tsx"
8703
+ }
8704
+ },
8705
+ {
8706
+ "kind": "custom-element-definition",
8707
+ "name": "le-tab-bar",
8708
+ "declaration": {
8709
+ "name": "LeTabBar",
8710
+ "module": "src/components/le-tab-bar/le-tab-bar.tsx"
8711
+ }
8712
+ }
8713
+ ]
8714
+ },
8715
+ {
8716
+ "kind": "javascript-module",
8717
+ "path": "src/components/le-tab-panel/le-tab-panel.tsx",
8718
+ "declarations": [
8719
+ {
8720
+ "kind": "class",
8721
+ "description": "A tab panel component used as a child of le-tabs.\n\nEach le-tab-panel defines both the tab button label and the panel content.\nThe parent le-tabs component automatically reads these panels and creates\nthe tab interface.",
8722
+ "name": "LeTabPanel",
8723
+ "slots": [
8724
+ {
8725
+ "description": "Default slot for panel content",
8726
+ "name": ""
8727
+ }
8728
+ ],
8729
+ "members": [
8730
+ {
8731
+ "kind": "field",
8732
+ "name": "el",
8733
+ "type": {
8734
+ "text": "HTMLLeTabPanelElement"
8735
+ }
8736
+ },
8737
+ {
8738
+ "kind": "field",
8739
+ "name": "label",
8740
+ "type": {
8741
+ "text": "string"
8742
+ },
8743
+ "description": "The label displayed in the tab button."
8744
+ },
8745
+ {
8746
+ "kind": "field",
8747
+ "name": "value",
8748
+ "type": {
8749
+ "text": "string | undefined"
8750
+ },
8751
+ "description": "The value used to identify this tab.\nDefaults to the label if not provided."
8752
+ },
8753
+ {
8754
+ "kind": "field",
8755
+ "name": "iconStart",
8756
+ "type": {
8757
+ "text": "string | undefined"
8758
+ },
8759
+ "description": "Icon displayed at the start of the tab button.\nCan be an emoji, URL, or icon class."
8760
+ },
8761
+ {
8762
+ "kind": "field",
8763
+ "name": "iconEnd",
8764
+ "type": {
8765
+ "text": "string | undefined"
8766
+ },
8767
+ "description": "Icon displayed at the end of the tab button."
8768
+ },
8769
+ {
8770
+ "kind": "field",
8771
+ "name": "disabled",
8772
+ "type": {
8773
+ "text": "boolean"
8774
+ },
8775
+ "default": "false",
8776
+ "description": "Whether this tab is disabled."
8777
+ },
8778
+ {
8779
+ "kind": "field",
8780
+ "name": "lazy",
8781
+ "type": {
8782
+ "text": "boolean"
8783
+ },
8784
+ "default": "false",
8785
+ "description": "Whether to render the panel content only when active (lazy loading).\nWhen true, content is not rendered until the tab is first selected.\nWhen false (default), content is always in DOM but hidden when inactive."
8786
+ },
8787
+ {
8788
+ "kind": "field",
8789
+ "name": "active",
8790
+ "type": {
8791
+ "text": "boolean"
8792
+ },
8793
+ "default": "false",
8794
+ "description": "Internal: Whether this panel is currently active (set by parent le-tabs)"
8795
+ },
8796
+ {
8797
+ "kind": "field",
8798
+ "name": "hasBeenActive",
8799
+ "type": {
8800
+ "text": "boolean"
8801
+ },
8802
+ "default": "false",
8803
+ "description": "Internal: Track if panel has ever been activated (for lazy rendering)"
8804
+ },
8805
+ {
8806
+ "kind": "method",
8807
+ "name": "activeChanged",
8808
+ "parameters": [
8809
+ {
8810
+ "name": "isActive",
8811
+ "type": {
8812
+ "text": "boolean"
8813
+ }
8814
+ }
8815
+ ]
8816
+ },
8817
+ {
8818
+ "kind": "method",
8819
+ "name": "getValue",
8820
+ "return": {
8821
+ "type": {
8822
+ "text": "Promise<string>"
8823
+ }
8824
+ },
8825
+ "description": "Get the effective value (value or label as fallback)"
8826
+ },
8827
+ {
8828
+ "kind": "method",
8829
+ "name": "getTabConfig",
8830
+ "return": {
8831
+ "type": {
8832
+ "text": "Promise<{\n label: string;\n value: string;\n iconStart?: string;\n iconEnd?: string;\n disabled: boolean;\n }>"
8833
+ }
8834
+ },
8835
+ "description": "Get tab configuration for parent component"
8836
+ },
8837
+ {
8838
+ "kind": "method",
8839
+ "name": "setActive",
8840
+ "parameters": [
8841
+ {
8842
+ "name": "isActive",
8843
+ "type": {
8844
+ "text": "boolean"
8845
+ }
8846
+ }
8847
+ ],
8848
+ "description": "Set the active state (called by parent le-tabs)"
8849
+ },
8850
+ {
8851
+ "kind": "method",
8852
+ "name": "shouldRenderContent",
8853
+ "privacy": "private",
8854
+ "return": {
8855
+ "type": {
8856
+ "text": "boolean"
8857
+ }
8858
+ },
8859
+ "description": "Check if panel should render content"
8860
+ },
8861
+ {
8862
+ "kind": "method",
8863
+ "name": "render"
8864
+ }
8865
+ ],
8866
+ "attributes": [
8867
+ {
8868
+ "name": "label",
8869
+ "fieldName": "label",
8870
+ "description": "The label displayed in the tab button.",
8871
+ "type": {
8872
+ "text": "string"
8873
+ }
8874
+ },
8875
+ {
8876
+ "name": "value",
8877
+ "fieldName": "value",
8878
+ "description": "The value used to identify this tab.\nDefaults to the label if not provided.",
8879
+ "type": {
8880
+ "text": "string"
8881
+ }
8882
+ },
8883
+ {
8884
+ "name": "icon-start",
8885
+ "fieldName": "iconStart",
8886
+ "description": "Icon displayed at the start of the tab button.\nCan be an emoji, URL, or icon class.",
8887
+ "type": {
8888
+ "text": "string"
8889
+ }
8890
+ },
8891
+ {
8892
+ "name": "icon-end",
8893
+ "fieldName": "iconEnd",
8894
+ "description": "Icon displayed at the end of the tab button.",
8895
+ "type": {
8896
+ "text": "string"
8897
+ }
8898
+ },
8899
+ {
8900
+ "name": "disabled",
8901
+ "fieldName": "disabled",
8902
+ "default": "false",
8903
+ "description": "Whether this tab is disabled.",
8904
+ "type": {
8905
+ "text": "boolean"
8906
+ }
8907
+ },
8537
8908
  {
8538
- "name": "leTabChange",
8909
+ "name": "lazy",
8910
+ "fieldName": "lazy",
8911
+ "default": "false",
8912
+ "description": "Whether to render the panel content only when active (lazy loading).\nWhen true, content is not rendered until the tab is first selected.\nWhen false (default), content is always in DOM but hidden when inactive.",
8539
8913
  "type": {
8540
- "text": "EventEmitter<LeOptionSelectDetail>"
8541
- },
8542
- "description": "Emitted when the selected tab changes."
8914
+ "text": "boolean"
8915
+ }
8543
8916
  }
8544
8917
  ],
8918
+ "tagName": "le-tab-panel",
8919
+ "events": [],
8545
8920
  "customElement": true
8546
8921
  }
8547
8922
  ],
8548
8923
  "exports": [
8549
8924
  {
8550
8925
  "kind": "js",
8551
- "name": "LeTabBar",
8926
+ "name": "LeTabPanel",
8552
8927
  "declaration": {
8553
- "name": "LeTabBar",
8554
- "module": "src/components/le-tab-bar/le-tab-bar.tsx"
8928
+ "name": "LeTabPanel",
8929
+ "module": "src/components/le-tab-panel/le-tab-panel.tsx"
8555
8930
  }
8556
8931
  },
8557
8932
  {
8558
8933
  "kind": "custom-element-definition",
8559
- "name": "le-tab-bar",
8934
+ "name": "le-tab-panel",
8560
8935
  "declaration": {
8561
- "name": "LeTabBar",
8562
- "module": "src/components/le-tab-bar/le-tab-bar.tsx"
8936
+ "name": "LeTabPanel",
8937
+ "module": "src/components/le-tab-panel/le-tab-panel.tsx"
8563
8938
  }
8564
8939
  }
8565
8940
  ]
@@ -8975,233 +9350,6 @@
8975
9350
  }
8976
9351
  ]
8977
9352
  },
8978
- {
8979
- "kind": "javascript-module",
8980
- "path": "src/components/le-tab-panel/le-tab-panel.tsx",
8981
- "declarations": [
8982
- {
8983
- "kind": "class",
8984
- "description": "A tab panel component used as a child of le-tabs.\n\nEach le-tab-panel defines both the tab button label and the panel content.\nThe parent le-tabs component automatically reads these panels and creates\nthe tab interface.",
8985
- "name": "LeTabPanel",
8986
- "slots": [
8987
- {
8988
- "description": "Default slot for panel content",
8989
- "name": ""
8990
- }
8991
- ],
8992
- "members": [
8993
- {
8994
- "kind": "field",
8995
- "name": "el",
8996
- "type": {
8997
- "text": "HTMLLeTabPanelElement"
8998
- }
8999
- },
9000
- {
9001
- "kind": "field",
9002
- "name": "label",
9003
- "type": {
9004
- "text": "string"
9005
- },
9006
- "description": "The label displayed in the tab button."
9007
- },
9008
- {
9009
- "kind": "field",
9010
- "name": "value",
9011
- "type": {
9012
- "text": "string | undefined"
9013
- },
9014
- "description": "The value used to identify this tab.\nDefaults to the label if not provided."
9015
- },
9016
- {
9017
- "kind": "field",
9018
- "name": "iconStart",
9019
- "type": {
9020
- "text": "string | undefined"
9021
- },
9022
- "description": "Icon displayed at the start of the tab button.\nCan be an emoji, URL, or icon class."
9023
- },
9024
- {
9025
- "kind": "field",
9026
- "name": "iconEnd",
9027
- "type": {
9028
- "text": "string | undefined"
9029
- },
9030
- "description": "Icon displayed at the end of the tab button."
9031
- },
9032
- {
9033
- "kind": "field",
9034
- "name": "disabled",
9035
- "type": {
9036
- "text": "boolean"
9037
- },
9038
- "default": "false",
9039
- "description": "Whether this tab is disabled."
9040
- },
9041
- {
9042
- "kind": "field",
9043
- "name": "lazy",
9044
- "type": {
9045
- "text": "boolean"
9046
- },
9047
- "default": "false",
9048
- "description": "Whether to render the panel content only when active (lazy loading).\nWhen true, content is not rendered until the tab is first selected.\nWhen false (default), content is always in DOM but hidden when inactive."
9049
- },
9050
- {
9051
- "kind": "field",
9052
- "name": "active",
9053
- "type": {
9054
- "text": "boolean"
9055
- },
9056
- "default": "false",
9057
- "description": "Internal: Whether this panel is currently active (set by parent le-tabs)"
9058
- },
9059
- {
9060
- "kind": "field",
9061
- "name": "hasBeenActive",
9062
- "type": {
9063
- "text": "boolean"
9064
- },
9065
- "default": "false",
9066
- "description": "Internal: Track if panel has ever been activated (for lazy rendering)"
9067
- },
9068
- {
9069
- "kind": "method",
9070
- "name": "activeChanged",
9071
- "parameters": [
9072
- {
9073
- "name": "isActive",
9074
- "type": {
9075
- "text": "boolean"
9076
- }
9077
- }
9078
- ]
9079
- },
9080
- {
9081
- "kind": "method",
9082
- "name": "getValue",
9083
- "return": {
9084
- "type": {
9085
- "text": "Promise<string>"
9086
- }
9087
- },
9088
- "description": "Get the effective value (value or label as fallback)"
9089
- },
9090
- {
9091
- "kind": "method",
9092
- "name": "getTabConfig",
9093
- "return": {
9094
- "type": {
9095
- "text": "Promise<{\n label: string;\n value: string;\n iconStart?: string;\n iconEnd?: string;\n disabled: boolean;\n }>"
9096
- }
9097
- },
9098
- "description": "Get tab configuration for parent component"
9099
- },
9100
- {
9101
- "kind": "method",
9102
- "name": "setActive",
9103
- "parameters": [
9104
- {
9105
- "name": "isActive",
9106
- "type": {
9107
- "text": "boolean"
9108
- }
9109
- }
9110
- ],
9111
- "description": "Set the active state (called by parent le-tabs)"
9112
- },
9113
- {
9114
- "kind": "method",
9115
- "name": "shouldRenderContent",
9116
- "privacy": "private",
9117
- "return": {
9118
- "type": {
9119
- "text": "boolean"
9120
- }
9121
- },
9122
- "description": "Check if panel should render content"
9123
- },
9124
- {
9125
- "kind": "method",
9126
- "name": "render"
9127
- }
9128
- ],
9129
- "attributes": [
9130
- {
9131
- "name": "label",
9132
- "fieldName": "label",
9133
- "description": "The label displayed in the tab button.",
9134
- "type": {
9135
- "text": "string"
9136
- }
9137
- },
9138
- {
9139
- "name": "value",
9140
- "fieldName": "value",
9141
- "description": "The value used to identify this tab.\nDefaults to the label if not provided.",
9142
- "type": {
9143
- "text": "string"
9144
- }
9145
- },
9146
- {
9147
- "name": "icon-start",
9148
- "fieldName": "iconStart",
9149
- "description": "Icon displayed at the start of the tab button.\nCan be an emoji, URL, or icon class.",
9150
- "type": {
9151
- "text": "string"
9152
- }
9153
- },
9154
- {
9155
- "name": "icon-end",
9156
- "fieldName": "iconEnd",
9157
- "description": "Icon displayed at the end of the tab button.",
9158
- "type": {
9159
- "text": "string"
9160
- }
9161
- },
9162
- {
9163
- "name": "disabled",
9164
- "fieldName": "disabled",
9165
- "default": "false",
9166
- "description": "Whether this tab is disabled.",
9167
- "type": {
9168
- "text": "boolean"
9169
- }
9170
- },
9171
- {
9172
- "name": "lazy",
9173
- "fieldName": "lazy",
9174
- "default": "false",
9175
- "description": "Whether to render the panel content only when active (lazy loading).\nWhen true, content is not rendered until the tab is first selected.\nWhen false (default), content is always in DOM but hidden when inactive.",
9176
- "type": {
9177
- "text": "boolean"
9178
- }
9179
- }
9180
- ],
9181
- "tagName": "le-tab-panel",
9182
- "events": [],
9183
- "customElement": true
9184
- }
9185
- ],
9186
- "exports": [
9187
- {
9188
- "kind": "js",
9189
- "name": "LeTabPanel",
9190
- "declaration": {
9191
- "name": "LeTabPanel",
9192
- "module": "src/components/le-tab-panel/le-tab-panel.tsx"
9193
- }
9194
- },
9195
- {
9196
- "kind": "custom-element-definition",
9197
- "name": "le-tab-panel",
9198
- "declaration": {
9199
- "name": "LeTabPanel",
9200
- "module": "src/components/le-tab-panel/le-tab-panel.tsx"
9201
- }
9202
- }
9203
- ]
9204
- },
9205
9353
  {
9206
9354
  "kind": "javascript-module",
9207
9355
  "path": "src/components/le-tag/le-tag.tsx",