le-kit 0.3.0 → 0.3.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 (47) hide show
  1. package/dist/cjs/{le-button_13.cjs.entry.js → le-bar_16.cjs.entry.js} +951 -5
  2. package/dist/cjs/le-kit.cjs.js +1 -1
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/collection/components/le-bar/le-bar.js +65 -13
  5. package/dist/collection/components/le-bar/le-bar.js.map +1 -1
  6. package/dist/collection/components/le-component/le-component.js +1 -1
  7. package/dist/collection/components/le-component/le-component.js.map +1 -1
  8. package/dist/collection/components/le-navigation/le-navigation.js +3 -3
  9. package/dist/collection/components/le-navigation/le-navigation.js.map +1 -1
  10. package/dist/collection/components/le-select/le-select.js +3 -3
  11. package/dist/collection/components/le-select/le-select.js.map +1 -1
  12. package/dist/collection/dist/components/assets/custom-elements.json +1053 -1035
  13. package/dist/components/assets/custom-elements.json +1053 -1035
  14. package/dist/components/le-bar2.js +46 -13
  15. package/dist/components/le-bar2.js.map +1 -1
  16. package/dist/components/le-button2.js +4 -4
  17. package/dist/components/le-button2.js.map +1 -1
  18. package/dist/components/le-navigation.js +2 -2
  19. package/dist/components/le-navigation.js.map +1 -1
  20. package/dist/docs.json +33 -4
  21. package/dist/esm/{le-button_13.entry.js → le-bar_16.entry.js} +951 -8
  22. package/dist/esm/le-kit.js +1 -1
  23. package/dist/esm/loader.js +1 -1
  24. package/dist/le-kit/dist/components/assets/custom-elements.json +1053 -1035
  25. package/dist/le-kit/le-kit.esm.js +1 -1
  26. package/dist/le-kit/p-dea78542.entry.js +2 -0
  27. package/dist/le-kit/p-dea78542.entry.js.map +1 -0
  28. package/dist/types/components/le-bar/le-bar.d.ts +6 -0
  29. package/dist/types/components.d.ts +14 -4
  30. package/package.json +1 -1
  31. package/dist/cjs/le-bar.cjs.entry.js +0 -428
  32. package/dist/cjs/le-icon.cjs.entry.js +0 -110
  33. package/dist/cjs/le-navigation.cjs.entry.js +0 -393
  34. package/dist/esm/le-bar.entry.js +0 -426
  35. package/dist/esm/le-bar.entry.js.map +0 -1
  36. package/dist/esm/le-icon.entry.js +0 -108
  37. package/dist/esm/le-icon.entry.js.map +0 -1
  38. package/dist/esm/le-navigation.entry.js +0 -391
  39. package/dist/esm/le-navigation.entry.js.map +0 -1
  40. package/dist/le-kit/p-2102a152.entry.js +0 -2
  41. package/dist/le-kit/p-2102a152.entry.js.map +0 -1
  42. package/dist/le-kit/p-4f11ea11.entry.js +0 -2
  43. package/dist/le-kit/p-4f11ea11.entry.js.map +0 -1
  44. package/dist/le-kit/p-53d9c363.entry.js +0 -2
  45. package/dist/le-kit/p-53d9c363.entry.js.map +0 -1
  46. package/dist/le-kit/p-94f774af.entry.js +0 -2
  47. package/dist/le-kit/p-94f774af.entry.js.map +0 -1
@@ -114,6 +114,15 @@
114
114
  "default": "false",
115
115
  "description": "Disable the internal overflow popover.\nWhen true, the bar still detects overflow and hides items,\nbut doesn't render its own popover. Use this when providing\ncustom overflow handling via the leBarOverflowChange event."
116
116
  },
117
+ {
118
+ "kind": "field",
119
+ "name": "minVisibleItems",
120
+ "type": {
121
+ "text": "number"
122
+ },
123
+ "default": "0",
124
+ "description": "Minimum number of visible items required when using \"more\" overflow mode.\nIf fewer items would be visible, the bar falls back to hamburger mode.\nOnly applies when overflow is \"more\"."
125
+ },
117
126
  {
118
127
  "kind": "field",
119
128
  "name": "showAllMenu",
@@ -467,6 +476,15 @@
467
476
  "text": "boolean"
468
477
  }
469
478
  },
479
+ {
480
+ "name": "min-visible-items",
481
+ "fieldName": "minVisibleItems",
482
+ "default": "0",
483
+ "description": "Minimum number of visible items required when using \"more\" overflow mode.\nIf fewer items would be visible, the bar falls back to hamburger mode.\nOnly applies when overflow is \"more\".",
484
+ "type": {
485
+ "text": "number"
486
+ }
487
+ },
470
488
  {
471
489
  "name": "show-all-menu",
472
490
  "fieldName": "showAllMenu",
@@ -952,6 +970,139 @@
952
970
  }
953
971
  ]
954
972
  },
973
+ {
974
+ "kind": "javascript-module",
975
+ "path": "src/components/le-card/le-card.tsx",
976
+ "declarations": [
977
+ {
978
+ "kind": "class",
979
+ "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.",
980
+ "name": "LeCard",
981
+ "cssProperties": [
982
+ {
983
+ "description": "Card background color",
984
+ "name": "--le-card-bg"
985
+ },
986
+ {
987
+ "description": "Card border radius",
988
+ "name": "--le-card-border-radius"
989
+ },
990
+ {
991
+ "description": "Card box shadow",
992
+ "name": "--le-card-shadow"
993
+ },
994
+ {
995
+ "description": "Card content padding",
996
+ "name": "--le-card-padding"
997
+ }
998
+ ],
999
+ "cssParts": [
1000
+ {
1001
+ "description": "The main card container",
1002
+ "name": "card"
1003
+ },
1004
+ {
1005
+ "description": "The card header section",
1006
+ "name": "header"
1007
+ },
1008
+ {
1009
+ "description": "The card content section",
1010
+ "name": "content"
1011
+ },
1012
+ {
1013
+ "description": "The card footer section",
1014
+ "name": "footer"
1015
+ }
1016
+ ],
1017
+ "slots": [
1018
+ {
1019
+ "description": "Card header content (title, actions)",
1020
+ "name": "header"
1021
+ },
1022
+ {
1023
+ "description": "Default slot for main card content",
1024
+ "name": ""
1025
+ },
1026
+ {
1027
+ "description": "Card footer content (buttons, links)",
1028
+ "name": "footer"
1029
+ }
1030
+ ],
1031
+ "members": [
1032
+ {
1033
+ "kind": "field",
1034
+ "name": "el",
1035
+ "type": {
1036
+ "text": "HTMLElement"
1037
+ }
1038
+ },
1039
+ {
1040
+ "kind": "field",
1041
+ "name": "variant",
1042
+ "type": {
1043
+ "text": "'default' | 'outlined' | 'elevated'"
1044
+ },
1045
+ "default": "'default'",
1046
+ "description": "Card variant style"
1047
+ },
1048
+ {
1049
+ "kind": "field",
1050
+ "name": "interactive",
1051
+ "type": {
1052
+ "text": "boolean"
1053
+ },
1054
+ "default": "false",
1055
+ "description": "Whether the card is interactive (clickable)"
1056
+ },
1057
+ {
1058
+ "kind": "method",
1059
+ "name": "render"
1060
+ }
1061
+ ],
1062
+ "attributes": [
1063
+ {
1064
+ "name": "variant",
1065
+ "fieldName": "variant",
1066
+ "default": "'default'",
1067
+ "description": "Card variant style",
1068
+ "type": {
1069
+ "text": "'default' | 'outlined' | 'elevated'"
1070
+ }
1071
+ },
1072
+ {
1073
+ "name": "interactive",
1074
+ "fieldName": "interactive",
1075
+ "default": "false",
1076
+ "description": "Whether the card is interactive (clickable)",
1077
+ "type": {
1078
+ "text": "boolean"
1079
+ }
1080
+ }
1081
+ ],
1082
+ "tagName": "le-card",
1083
+ "events": [],
1084
+ "customElement": true
1085
+ }
1086
+ ],
1087
+ "exports": [
1088
+ {
1089
+ "kind": "js",
1090
+ "name": "LeCard",
1091
+ "declaration": {
1092
+ "name": "LeCard",
1093
+ "module": "src/components/le-card/le-card.tsx"
1094
+ }
1095
+ },
1096
+ {
1097
+ "kind": "custom-element-definition",
1098
+ "name": "le-card",
1099
+ "declaration": {
1100
+ "name": "LeCard",
1101
+ "module": "src/components/le-card/le-card.tsx"
1102
+ }
1103
+ }
1104
+ ]
1105
+ },
955
1106
  {
956
1107
  "kind": "javascript-module",
957
1108
  "path": "src/components/le-button/le-button.tsx",
@@ -1304,336 +1455,425 @@
1304
1455
  },
1305
1456
  {
1306
1457
  "kind": "javascript-module",
1307
- "path": "src/components/le-checkbox/le-checkbox.tsx",
1458
+ "path": "src/components/le-combobox/le-combobox.tsx",
1308
1459
  "declarations": [
1309
1460
  {
1310
1461
  "kind": "class",
1311
- "description": "A checkbox component with support for labels, descriptions, and external IDs.",
1312
- "name": "LeCheckbox",
1313
- "cssProperties": [
1314
- {
1315
- "description": "Size of the checkbox input",
1316
- "name": "--le-checkbox-size"
1317
- },
1462
+ "description": "A combobox component with searchable dropdown.\n\nCombines a text input with a dropdown list, allowing users to\nfilter options by typing or select from the list.",
1463
+ "name": "LeCombobox",
1464
+ "members": [
1318
1465
  {
1319
- "description": "Color of the checkbox when checked",
1320
- "name": "--le-checkbox-color"
1466
+ "kind": "field",
1467
+ "name": "el",
1468
+ "type": {
1469
+ "text": "HTMLElement"
1470
+ }
1321
1471
  },
1322
1472
  {
1323
- "description": "Color of the label text",
1324
- "name": "--le-checkbox-label-color"
1473
+ "kind": "field",
1474
+ "name": "options",
1475
+ "type": {
1476
+ "text": "LeOption[] | string"
1477
+ },
1478
+ "default": "[]",
1479
+ "description": "The options to display in the dropdown."
1325
1480
  },
1326
1481
  {
1327
- "description": "Color of the description text",
1328
- "name": "--le-checkbox-desc-color"
1329
- }
1330
- ],
1331
- "slots": [
1332
- {
1333
- "description": "The label text for the checkbox",
1334
- "name": ""
1482
+ "kind": "field",
1483
+ "name": "value",
1484
+ "type": {
1485
+ "text": "LeOptionValue | undefined"
1486
+ },
1487
+ "description": "The currently selected value."
1335
1488
  },
1336
- {
1337
- "description": "Additional description text displayed below the label",
1338
- "name": "description"
1339
- }
1340
- ],
1341
- "members": [
1342
1489
  {
1343
1490
  "kind": "field",
1344
- "name": "el",
1491
+ "name": "placeholder",
1345
1492
  "type": {
1346
- "text": "HTMLElement"
1347
- }
1493
+ "text": "string"
1494
+ },
1495
+ "default": "'Type to search...'",
1496
+ "description": "Placeholder text for the input."
1348
1497
  },
1349
1498
  {
1350
1499
  "kind": "field",
1351
- "name": "checked",
1500
+ "name": "disabled",
1352
1501
  "type": {
1353
1502
  "text": "boolean"
1354
1503
  },
1355
1504
  "default": "false",
1356
- "description": "Whether the checkbox is checked"
1505
+ "description": "Whether the combobox is disabled."
1357
1506
  },
1358
1507
  {
1359
1508
  "kind": "field",
1360
- "name": "disabled",
1509
+ "name": "required",
1361
1510
  "type": {
1362
1511
  "text": "boolean"
1363
1512
  },
1364
1513
  "default": "false",
1365
- "description": "Whether the checkbox is disabled"
1514
+ "description": "Whether selection is required."
1366
1515
  },
1367
1516
  {
1368
1517
  "kind": "field",
1369
1518
  "name": "name",
1370
1519
  "type": {
1371
- "text": "string"
1520
+ "text": "string | undefined"
1372
1521
  },
1373
- "description": "The name of the checkbox input"
1522
+ "description": "Name attribute for form submission."
1374
1523
  },
1375
1524
  {
1376
1525
  "kind": "field",
1377
- "name": "value",
1526
+ "name": "fullWidth",
1378
1527
  "type": {
1379
- "text": "string"
1528
+ "text": "boolean"
1380
1529
  },
1381
- "description": "The value of the checkbox input"
1530
+ "default": "false",
1531
+ "description": "Whether the multiselect should take full width of its container."
1382
1532
  },
1383
1533
  {
1384
1534
  "kind": "field",
1385
- "name": "externalId",
1535
+ "name": "size",
1386
1536
  "type": {
1387
- "text": "string"
1537
+ "text": "'small' | 'medium' | 'large'"
1388
1538
  },
1389
- "description": "External ID for linking with external systems (e.g. database ID, PDF form field ID)"
1539
+ "default": "'medium'",
1540
+ "description": "Size variant of the combobox."
1390
1541
  },
1391
1542
  {
1392
1543
  "kind": "field",
1393
- "name": "handleChange",
1394
- "privacy": "private"
1395
- },
1396
- {
1397
- "kind": "method",
1398
- "name": "render"
1399
- }
1400
- ],
1401
- "attributes": [
1402
- {
1403
- "name": "checked",
1404
- "fieldName": "checked",
1405
- "default": "false",
1406
- "description": "Whether the checkbox is checked",
1544
+ "name": "allowCustom",
1407
1545
  "type": {
1408
1546
  "text": "boolean"
1409
- }
1410
- },
1411
- {
1412
- "name": "disabled",
1413
- "fieldName": "disabled",
1547
+ },
1414
1548
  "default": "false",
1415
- "description": "Whether the checkbox is disabled",
1416
- "type": {
1417
- "text": "boolean"
1418
- }
1549
+ "description": "Whether to allow custom values not in the options list."
1419
1550
  },
1420
1551
  {
1421
- "name": "name",
1422
- "fieldName": "name",
1423
- "description": "The name of the checkbox input",
1552
+ "kind": "field",
1553
+ "name": "minSearchLength",
1424
1554
  "type": {
1425
- "text": "string"
1426
- }
1555
+ "text": "number"
1556
+ },
1557
+ "default": "0",
1558
+ "description": "Minimum characters before showing filtered results."
1427
1559
  },
1428
1560
  {
1429
- "name": "value",
1430
- "fieldName": "value",
1431
- "description": "The value of the checkbox input",
1561
+ "kind": "field",
1562
+ "name": "emptyText",
1432
1563
  "type": {
1433
1564
  "text": "string"
1434
- }
1565
+ },
1566
+ "default": "'No results found'",
1567
+ "description": "Text to show when no options match the search."
1435
1568
  },
1436
1569
  {
1437
- "name": "external-id",
1438
- "fieldName": "externalId",
1439
- "description": "External ID for linking with external systems (e.g. database ID, PDF form field ID)",
1570
+ "kind": "field",
1571
+ "name": "open",
1572
+ "type": {
1573
+ "text": "boolean"
1574
+ },
1575
+ "default": "false",
1576
+ "description": "Whether the dropdown is currently open."
1577
+ },
1578
+ {
1579
+ "kind": "method",
1580
+ "name": "handleWindowClick",
1581
+ "parameters": [
1582
+ {
1583
+ "name": "event",
1584
+ "type": {
1585
+ "text": "MouseEvent"
1586
+ }
1587
+ }
1588
+ ]
1589
+ },
1590
+ {
1591
+ "kind": "field",
1592
+ "name": "inputValue",
1440
1593
  "type": {
1441
1594
  "text": "string"
1442
- }
1443
- }
1444
- ],
1445
- "tagName": "le-checkbox",
1446
- "events": [
1595
+ },
1596
+ "privacy": "private",
1597
+ "default": "''"
1598
+ },
1447
1599
  {
1448
- "name": "change",
1600
+ "kind": "field",
1601
+ "name": "selectedOption",
1449
1602
  "type": {
1450
- "text": "EventEmitter<{ checked: boolean; value: string; name: string; externalId: string }>"
1603
+ "text": "LeOption | undefined"
1451
1604
  },
1452
- "description": "Emitted when the checked state changes"
1453
- }
1454
- ],
1455
- "customElement": true
1456
- }
1457
- ],
1458
- "exports": [
1459
- {
1460
- "kind": "js",
1461
- "name": "LeCheckbox",
1462
- "declaration": {
1463
- "name": "LeCheckbox",
1464
- "module": "src/components/le-checkbox/le-checkbox.tsx"
1465
- }
1466
- },
1467
- {
1468
- "kind": "custom-element-definition",
1469
- "name": "le-checkbox",
1470
- "declaration": {
1471
- "name": "LeCheckbox",
1472
- "module": "src/components/le-checkbox/le-checkbox.tsx"
1473
- }
1474
- }
1475
- ]
1476
- },
1477
- {
1478
- "kind": "javascript-module",
1479
- "path": "src/components/le-card/le-card.tsx",
1480
- "declarations": [
1481
- {
1482
- "kind": "class",
1483
- "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.",
1484
- "name": "LeCard",
1485
- "cssProperties": [
1605
+ "privacy": "private"
1606
+ },
1486
1607
  {
1487
- "description": "Card background color",
1488
- "name": "--le-card-bg"
1608
+ "kind": "field",
1609
+ "name": "dropdownEl",
1610
+ "type": {
1611
+ "text": "HTMLLeDropdownBaseElement | undefined"
1612
+ },
1613
+ "privacy": "private"
1489
1614
  },
1490
1615
  {
1491
- "description": "Card border radius",
1492
- "name": "--le-card-border-radius"
1616
+ "kind": "field",
1617
+ "name": "inputEl",
1618
+ "type": {
1619
+ "text": "HTMLInputElement | undefined"
1620
+ },
1621
+ "privacy": "private"
1493
1622
  },
1494
1623
  {
1495
- "description": "Card box shadow",
1496
- "name": "--le-card-shadow"
1624
+ "kind": "method",
1625
+ "name": "handleValueChange"
1497
1626
  },
1498
1627
  {
1499
- "description": "Card content padding",
1500
- "name": "--le-card-padding"
1501
- }
1502
- ],
1503
- "cssParts": [
1628
+ "kind": "method",
1629
+ "name": "handleOptionsChange"
1630
+ },
1504
1631
  {
1505
- "description": "The main card container",
1506
- "name": "card"
1632
+ "kind": "field",
1633
+ "name": "parsedOptions",
1634
+ "type": {
1635
+ "text": "LeOption[]"
1636
+ },
1637
+ "privacy": "private",
1638
+ "readonly": true
1507
1639
  },
1508
1640
  {
1509
- "description": "The card header section",
1510
- "name": "header"
1641
+ "kind": "method",
1642
+ "name": "updateSelectedOption",
1643
+ "privacy": "private"
1511
1644
  },
1512
1645
  {
1513
- "description": "The card content section",
1514
- "name": "content"
1646
+ "kind": "field",
1647
+ "name": "filterOption",
1648
+ "privacy": "private"
1515
1649
  },
1516
1650
  {
1517
- "description": "The card footer section",
1518
- "name": "footer"
1519
- }
1520
- ],
1521
- "slots": [
1651
+ "kind": "field",
1652
+ "name": "handleOptionSelect",
1653
+ "privacy": "private"
1654
+ },
1522
1655
  {
1523
- "description": "Card header content (title, actions)",
1524
- "name": "header"
1656
+ "kind": "field",
1657
+ "name": "handleDropdownOpen",
1658
+ "privacy": "private"
1525
1659
  },
1526
1660
  {
1527
- "description": "Default slot for main card content",
1528
- "name": ""
1661
+ "kind": "field",
1662
+ "name": "handleDropdownClose",
1663
+ "privacy": "private"
1529
1664
  },
1530
1665
  {
1531
- "description": "Card footer content (buttons, links)",
1532
- "name": "footer"
1666
+ "kind": "field",
1667
+ "name": "handleInputChange",
1668
+ "privacy": "private"
1669
+ },
1670
+ {
1671
+ "kind": "field",
1672
+ "name": "handleInputFocus",
1673
+ "privacy": "private"
1674
+ },
1675
+ {
1676
+ "kind": "field",
1677
+ "name": "handleInputKeyDown",
1678
+ "privacy": "private"
1679
+ },
1680
+ {
1681
+ "kind": "field",
1682
+ "name": "handleClear",
1683
+ "privacy": "private"
1684
+ },
1685
+ {
1686
+ "kind": "method",
1687
+ "name": "showDropdown",
1688
+ "description": "Opens the dropdown."
1689
+ },
1690
+ {
1691
+ "kind": "method",
1692
+ "name": "hideDropdown",
1693
+ "description": "Closes the dropdown."
1694
+ },
1695
+ {
1696
+ "kind": "method",
1697
+ "name": "focusInput",
1698
+ "description": "Focuses the input element."
1699
+ },
1700
+ {
1701
+ "kind": "method",
1702
+ "name": "render"
1533
1703
  }
1534
1704
  ],
1535
- "members": [
1705
+ "attributes": [
1536
1706
  {
1537
- "kind": "field",
1538
- "name": "el",
1707
+ "name": "options",
1708
+ "fieldName": "options",
1709
+ "default": "[]",
1710
+ "description": "The options to display in the dropdown.",
1711
+ "type": {
1712
+ "text": "LeOption[] | string"
1713
+ }
1714
+ },
1715
+ {
1716
+ "name": "value",
1717
+ "fieldName": "value",
1718
+ "description": "The currently selected value.",
1719
+ "type": {
1720
+ "text": "LeOptionValue"
1721
+ }
1722
+ },
1723
+ {
1724
+ "name": "placeholder",
1725
+ "fieldName": "placeholder",
1726
+ "default": "'Type to search...'",
1727
+ "description": "Placeholder text for the input.",
1728
+ "type": {
1729
+ "text": "string"
1730
+ }
1731
+ },
1732
+ {
1733
+ "name": "disabled",
1734
+ "fieldName": "disabled",
1735
+ "default": "false",
1736
+ "description": "Whether the combobox is disabled.",
1737
+ "type": {
1738
+ "text": "boolean"
1739
+ }
1740
+ },
1741
+ {
1742
+ "name": "required",
1743
+ "fieldName": "required",
1744
+ "default": "false",
1745
+ "description": "Whether selection is required.",
1746
+ "type": {
1747
+ "text": "boolean"
1748
+ }
1749
+ },
1750
+ {
1751
+ "name": "name",
1752
+ "fieldName": "name",
1753
+ "description": "Name attribute for form submission.",
1754
+ "type": {
1755
+ "text": "string"
1756
+ }
1757
+ },
1758
+ {
1759
+ "name": "full-width",
1760
+ "fieldName": "fullWidth",
1761
+ "default": "false",
1762
+ "description": "Whether the multiselect should take full width of its container.",
1763
+ "type": {
1764
+ "text": "boolean"
1765
+ }
1766
+ },
1767
+ {
1768
+ "name": "size",
1769
+ "fieldName": "size",
1770
+ "default": "'medium'",
1771
+ "description": "Size variant of the combobox.",
1772
+ "type": {
1773
+ "text": "'small' | 'medium' | 'large'"
1774
+ }
1775
+ },
1776
+ {
1777
+ "name": "allow-custom",
1778
+ "fieldName": "allowCustom",
1779
+ "default": "false",
1780
+ "description": "Whether to allow custom values not in the options list.",
1781
+ "type": {
1782
+ "text": "boolean"
1783
+ }
1784
+ },
1785
+ {
1786
+ "name": "min-search-length",
1787
+ "fieldName": "minSearchLength",
1788
+ "default": "0",
1789
+ "description": "Minimum characters before showing filtered results.",
1790
+ "type": {
1791
+ "text": "number"
1792
+ }
1793
+ },
1794
+ {
1795
+ "name": "empty-text",
1796
+ "fieldName": "emptyText",
1797
+ "default": "'No results found'",
1798
+ "description": "Text to show when no options match the search.",
1539
1799
  "type": {
1540
- "text": "HTMLElement"
1800
+ "text": "string"
1541
1801
  }
1542
1802
  },
1543
1803
  {
1544
- "kind": "field",
1545
- "name": "variant",
1804
+ "name": "open",
1805
+ "fieldName": "open",
1806
+ "default": "false",
1807
+ "description": "Whether the dropdown is currently open.",
1546
1808
  "type": {
1547
- "text": "'default' | 'outlined' | 'elevated'"
1809
+ "text": "boolean"
1810
+ }
1811
+ }
1812
+ ],
1813
+ "tagName": "le-combobox",
1814
+ "events": [
1815
+ {
1816
+ "name": "leChange",
1817
+ "type": {
1818
+ "text": "EventEmitter<LeOptionSelectDetail>"
1548
1819
  },
1549
- "default": "'default'",
1550
- "description": "Card variant style"
1820
+ "description": "Emitted when the selected value changes."
1551
1821
  },
1552
1822
  {
1553
- "kind": "field",
1554
- "name": "interactive",
1823
+ "name": "leInput",
1555
1824
  "type": {
1556
- "text": "boolean"
1825
+ "text": "EventEmitter<{ value: string }>"
1557
1826
  },
1558
- "default": "false",
1559
- "description": "Whether the card is interactive (clickable)"
1827
+ "description": "Emitted when the input value changes (for custom values)."
1560
1828
  },
1561
1829
  {
1562
- "kind": "method",
1563
- "name": "render"
1564
- }
1565
- ],
1566
- "attributes": [
1567
- {
1568
- "name": "variant",
1569
- "fieldName": "variant",
1570
- "default": "'default'",
1571
- "description": "Card variant style",
1830
+ "name": "leOpen",
1572
1831
  "type": {
1573
- "text": "'default' | 'outlined' | 'elevated'"
1574
- }
1832
+ "text": "EventEmitter<void>"
1833
+ },
1834
+ "description": "Emitted when the dropdown opens."
1575
1835
  },
1576
1836
  {
1577
- "name": "interactive",
1578
- "fieldName": "interactive",
1579
- "default": "false",
1580
- "description": "Whether the card is interactive (clickable)",
1837
+ "name": "leClose",
1581
1838
  "type": {
1582
- "text": "boolean"
1583
- }
1839
+ "text": "EventEmitter<void>"
1840
+ },
1841
+ "description": "Emitted when the dropdown closes."
1584
1842
  }
1585
1843
  ],
1586
- "tagName": "le-card",
1587
- "events": [],
1588
1844
  "customElement": true
1589
1845
  }
1590
1846
  ],
1591
1847
  "exports": [
1592
1848
  {
1593
1849
  "kind": "js",
1594
- "name": "LeCard",
1850
+ "name": "LeCombobox",
1595
1851
  "declaration": {
1596
- "name": "LeCard",
1597
- "module": "src/components/le-card/le-card.tsx"
1852
+ "name": "LeCombobox",
1853
+ "module": "src/components/le-combobox/le-combobox.tsx"
1598
1854
  }
1599
1855
  },
1600
1856
  {
1601
1857
  "kind": "custom-element-definition",
1602
- "name": "le-card",
1858
+ "name": "le-combobox",
1603
1859
  "declaration": {
1604
- "name": "LeCard",
1605
- "module": "src/components/le-card/le-card.tsx"
1860
+ "name": "LeCombobox",
1861
+ "module": "src/components/le-combobox/le-combobox.tsx"
1606
1862
  }
1607
1863
  }
1608
1864
  ]
1609
1865
  },
1610
1866
  {
1611
1867
  "kind": "javascript-module",
1612
- "path": "src/components/le-collapse/le-collapse.tsx",
1868
+ "path": "src/components/le-component/le-component.tsx",
1613
1869
  "declarations": [
1614
1870
  {
1615
1871
  "kind": "class",
1616
- "description": "Animated show/hide wrapper.\n\nSupports height collapse (auto->0) and/or fading.\nCan optionally listen to the nearest `le-header` shrink events.",
1617
- "name": "LeCollapse",
1618
- "cssProperties": [
1619
- {
1620
- "description": "Transition duration",
1621
- "name": "--le-collapse-duration"
1622
- }
1623
- ],
1624
- "cssParts": [
1625
- {
1626
- "description": "Collapsible region",
1627
- "name": "region"
1628
- },
1629
- {
1630
- "description": "Inner content",
1631
- "name": "content"
1632
- }
1633
- ],
1872
+ "description": "Component wrapper for admin mode editing.\n\nThis component is used internally by other components to provide admin-mode\nediting capabilities. It wraps the component's rendered output and shows\na settings popover for editing properties.\n\nIn default mode, it acts as a simple passthrough (display: contents).\nIn admin mode, it shows a border, component name header, and settings popover.\n\nThe host element is found automatically by traversing up through the shadow DOM.\n\nUsage inside a component's render method:\n```tsx\nrender() {\n return (\n <le-component component=\"le-card\">\n <Host>...</Host>\n </le-component>\n );\n}\n```",
1873
+ "name": "LeComponent",
1634
1874
  "slots": [
1635
1875
  {
1636
- "description": "Content to animate",
1876
+ "description": "The component's rendered content",
1637
1877
  "name": ""
1638
1878
  }
1639
1879
  ],
@@ -1647,81 +1887,217 @@
1647
1887
  },
1648
1888
  {
1649
1889
  "kind": "field",
1650
- "name": "closed",
1890
+ "name": "component",
1651
1891
  "type": {
1652
- "text": "boolean"
1892
+ "text": "string"
1653
1893
  },
1654
- "default": "false",
1655
- "description": "Since Stencil boolean props default to `false` when the attribute is missing.\ninstead of `open` defaulting to `true`, using a `closed` prop."
1894
+ "description": "The tag name of the component (e.g., 'le-card').\nUsed to look up property metadata and display the component name."
1656
1895
  },
1657
1896
  {
1658
1897
  "kind": "field",
1659
- "name": "scrollDown",
1898
+ "name": "displayName",
1660
1899
  "type": {
1661
- "text": "boolean"
1900
+ "text": "string | undefined"
1662
1901
  },
1663
- "default": "false",
1664
- "description": "Whether the content should scroll down from the top when open."
1902
+ "description": "Optional display name for the component.\nIf not provided, the tag name will be formatted as the display name."
1665
1903
  },
1666
1904
  {
1667
1905
  "kind": "field",
1668
- "name": "noFading",
1906
+ "name": "hostClass",
1669
1907
  "type": {
1670
- "text": "boolean"
1908
+ "text": "string | undefined"
1671
1909
  },
1672
- "default": "false",
1673
- "description": "Stop fading the content when collapsing/expanding."
1910
+ "description": "Classes to apply to the host element.\nAllows parent components to pass their styling classes."
1674
1911
  },
1675
1912
  {
1676
1913
  "kind": "field",
1677
- "name": "collapseOnHeaderShrink",
1914
+ "name": "hostStyle",
1915
+ "type": {
1916
+ "text": "{ [key: string]: string } | undefined"
1917
+ },
1918
+ "description": "Inline styles to apply to the host element.\nAllows parent components to pass dynamic styles (e.g., flex properties)."
1919
+ },
1920
+ {
1921
+ "kind": "field",
1922
+ "name": "hostElement",
1923
+ "type": {
1924
+ "text": "HTMLElement | undefined"
1925
+ },
1926
+ "privacy": "private",
1927
+ "description": "Reference to the host element (found automatically from parent)"
1928
+ },
1929
+ {
1930
+ "kind": "field",
1931
+ "name": "adminMode",
1678
1932
  "type": {
1679
1933
  "text": "boolean"
1680
1934
  },
1935
+ "privacy": "private",
1681
1936
  "default": "false",
1682
- "description": "If true, collapse/expand based on the nearest header shrink event."
1937
+ "description": "Internal state to track admin mode"
1938
+ },
1939
+ {
1940
+ "kind": "field",
1941
+ "name": "componentMeta",
1942
+ "type": {
1943
+ "text": "ComponentMetadata | null"
1944
+ },
1945
+ "privacy": "private",
1946
+ "default": "null",
1947
+ "description": "Component metadata loaded from Custom Elements Manifest"
1948
+ },
1949
+ {
1950
+ "kind": "field",
1951
+ "name": "propertyValues",
1952
+ "type": {
1953
+ "text": "Record<string, any>"
1954
+ },
1955
+ "privacy": "private",
1956
+ "default": "{}",
1957
+ "description": "Current property values of the host component"
1958
+ },
1959
+ {
1960
+ "kind": "field",
1961
+ "name": "disconnectModeObserver",
1962
+ "type": {
1963
+ "text": "() => void | undefined"
1964
+ },
1965
+ "privacy": "private"
1683
1966
  },
1684
1967
  {
1685
1968
  "kind": "method",
1686
- "name": "handleHeaderShrink",
1969
+ "name": "findHostElement",
1970
+ "privacy": "private",
1971
+ "description": "Find the host element by traversing up through shadow DOM"
1972
+ },
1973
+ {
1974
+ "kind": "method",
1975
+ "name": "formatDisplayName",
1976
+ "privacy": "private",
1977
+ "return": {
1978
+ "type": {
1979
+ "text": "string"
1980
+ }
1981
+ },
1982
+ "parameters": [
1983
+ {
1984
+ "name": "tagName",
1985
+ "type": {
1986
+ "text": "string"
1987
+ }
1988
+ }
1989
+ ],
1990
+ "description": "Formats a tag name into a display name\ne.g., 'le-card' -> 'Card'"
1991
+ },
1992
+ {
1993
+ "kind": "method",
1994
+ "name": "loadComponentMetadata",
1995
+ "privacy": "private",
1996
+ "description": "Load component metadata from the Custom Elements Manifest"
1997
+ },
1998
+ {
1999
+ "kind": "method",
2000
+ "name": "isInternalAttribute",
2001
+ "privacy": "private",
2002
+ "return": {
2003
+ "type": {
2004
+ "text": "boolean"
2005
+ }
2006
+ },
2007
+ "parameters": [
2008
+ {
2009
+ "name": "name",
2010
+ "type": {
2011
+ "text": "string"
2012
+ }
2013
+ }
2014
+ ],
2015
+ "description": "Check if an attribute is internal (should not be shown in editor)"
2016
+ },
2017
+ {
2018
+ "kind": "method",
2019
+ "name": "readPropertyValues",
2020
+ "privacy": "private",
2021
+ "description": "Read current property values from the host element"
2022
+ },
2023
+ {
2024
+ "kind": "method",
2025
+ "name": "parseAttributeValue",
2026
+ "privacy": "private",
2027
+ "return": {
2028
+ "type": {
2029
+ "text": "any"
2030
+ }
2031
+ },
2032
+ "parameters": [
2033
+ {
2034
+ "name": "value",
2035
+ "type": {
2036
+ "text": "string | null"
2037
+ }
2038
+ },
2039
+ {
2040
+ "name": "type",
2041
+ "optional": true,
2042
+ "type": {
2043
+ "text": "string"
2044
+ }
2045
+ }
2046
+ ],
2047
+ "description": "Parse an attribute value based on its type"
2048
+ },
2049
+ {
2050
+ "kind": "method",
2051
+ "name": "handlePropertyChange",
2052
+ "privacy": "private",
1687
2053
  "parameters": [
1688
2054
  {
1689
- "name": "ev",
2055
+ "name": "attrName",
2056
+ "type": {
2057
+ "text": "string"
2058
+ }
2059
+ },
2060
+ {
2061
+ "name": "value",
1690
2062
  "type": {
1691
- "text": "Event"
2063
+ "text": "any"
2064
+ }
2065
+ },
2066
+ {
2067
+ "name": "type",
2068
+ "optional": true,
2069
+ "type": {
2070
+ "text": "string"
1692
2071
  }
1693
2072
  }
1694
2073
  ],
1695
- "description": "Handles `leHeaderShrinkChange` events from the `le-header`.\nIn case multiple headers are present, only the nearest one in the DOM tree is used."
1696
- },
1697
- {
1698
- "kind": "field",
1699
- "name": "headerShrunk",
1700
- "type": {
1701
- "text": "boolean"
1702
- },
1703
- "privacy": "private",
1704
- "default": "false"
1705
- },
1706
- {
1707
- "kind": "method",
1708
- "name": "onOpenChange",
1709
- "privacy": "protected"
2074
+ "description": "Handle property value changes from the editor"
1710
2075
  },
1711
2076
  {
1712
2077
  "kind": "method",
1713
- "name": "onDrivenStateChange",
1714
- "privacy": "protected"
2078
+ "name": "deleteComponent",
2079
+ "privacy": "private",
2080
+ "description": "Delete this component from the DOM"
1715
2081
  },
1716
2082
  {
1717
2083
  "kind": "method",
1718
- "name": "shouldBeOpen",
1719
- "privacy": "private"
2084
+ "name": "renderPropertyEditor",
2085
+ "privacy": "private",
2086
+ "description": "Render the property editor form"
1720
2087
  },
1721
2088
  {
1722
2089
  "kind": "method",
1723
- "name": "applyOpenState",
1724
- "privacy": "private"
2090
+ "name": "renderPropertyField",
2091
+ "privacy": "private",
2092
+ "parameters": [
2093
+ {
2094
+ "name": "attr",
2095
+ "type": {
2096
+ "text": "AttributeMetadata"
2097
+ }
2098
+ }
2099
+ ],
2100
+ "description": "Render a single property field based on its type"
1725
2101
  },
1726
2102
  {
1727
2103
  "kind": "method",
@@ -1730,43 +2106,39 @@
1730
2106
  ],
1731
2107
  "attributes": [
1732
2108
  {
1733
- "name": "closed",
1734
- "fieldName": "closed",
1735
- "default": "false",
1736
- "description": "Since Stencil boolean props default to `false` when the attribute is missing.\ninstead of `open` defaulting to `true`, using a `closed` prop.",
2109
+ "name": "component",
2110
+ "fieldName": "component",
2111
+ "description": "The tag name of the component (e.g., 'le-card').\nUsed to look up property metadata and display the component name.",
1737
2112
  "type": {
1738
- "text": "boolean"
2113
+ "text": "string"
1739
2114
  }
1740
2115
  },
1741
2116
  {
1742
- "name": "scroll-down",
1743
- "fieldName": "scrollDown",
1744
- "default": "false",
1745
- "description": "Whether the content should scroll down from the top when open.",
2117
+ "name": "display-name",
2118
+ "fieldName": "displayName",
2119
+ "description": "Optional display name for the component.\nIf not provided, the tag name will be formatted as the display name.",
1746
2120
  "type": {
1747
- "text": "boolean"
2121
+ "text": "string"
1748
2122
  }
1749
2123
  },
1750
2124
  {
1751
- "name": "no-fading",
1752
- "fieldName": "noFading",
1753
- "default": "false",
1754
- "description": "Stop fading the content when collapsing/expanding.",
2125
+ "name": "host-class",
2126
+ "fieldName": "hostClass",
2127
+ "description": "Classes to apply to the host element.\nAllows parent components to pass their styling classes.",
1755
2128
  "type": {
1756
- "text": "boolean"
2129
+ "text": "string"
1757
2130
  }
1758
2131
  },
1759
2132
  {
1760
- "name": "collapse-on-header-shrink",
1761
- "fieldName": "collapseOnHeaderShrink",
1762
- "default": "false",
1763
- "description": "If true, collapse/expand based on the nearest header shrink event.",
2133
+ "name": "host-style",
2134
+ "fieldName": "hostStyle",
2135
+ "description": "Inline styles to apply to the host element.\nAllows parent components to pass dynamic styles (e.g., flex properties).",
1764
2136
  "type": {
1765
- "text": "boolean"
2137
+ "text": "{ [key: string]: string }"
1766
2138
  }
1767
2139
  }
1768
2140
  ],
1769
- "tagName": "le-collapse",
2141
+ "tagName": "le-component",
1770
2142
  "events": [],
1771
2143
  "customElement": true
1772
2144
  }
@@ -1774,265 +2146,137 @@
1774
2146
  "exports": [
1775
2147
  {
1776
2148
  "kind": "js",
1777
- "name": "LeCollapse",
2149
+ "name": "LeComponent",
1778
2150
  "declaration": {
1779
- "name": "LeCollapse",
1780
- "module": "src/components/le-collapse/le-collapse.tsx"
2151
+ "name": "LeComponent",
2152
+ "module": "src/components/le-component/le-component.tsx"
1781
2153
  }
1782
2154
  },
1783
2155
  {
1784
2156
  "kind": "custom-element-definition",
1785
- "name": "le-collapse",
2157
+ "name": "le-component",
1786
2158
  "declaration": {
1787
- "name": "LeCollapse",
1788
- "module": "src/components/le-collapse/le-collapse.tsx"
2159
+ "name": "LeComponent",
2160
+ "module": "src/components/le-component/le-component.tsx"
1789
2161
  }
1790
2162
  }
1791
2163
  ]
1792
2164
  },
1793
2165
  {
1794
2166
  "kind": "javascript-module",
1795
- "path": "src/components/le-combobox/le-combobox.tsx",
2167
+ "path": "src/components/le-collapse/le-collapse.tsx",
1796
2168
  "declarations": [
1797
2169
  {
1798
2170
  "kind": "class",
1799
- "description": "A combobox component with searchable dropdown.\n\nCombines a text input with a dropdown list, allowing users to\nfilter options by typing or select from the list.",
1800
- "name": "LeCombobox",
1801
- "members": [
1802
- {
1803
- "kind": "field",
1804
- "name": "el",
1805
- "type": {
1806
- "text": "HTMLElement"
1807
- }
1808
- },
1809
- {
1810
- "kind": "field",
1811
- "name": "options",
1812
- "type": {
1813
- "text": "LeOption[] | string"
1814
- },
1815
- "default": "[]",
1816
- "description": "The options to display in the dropdown."
1817
- },
1818
- {
1819
- "kind": "field",
1820
- "name": "value",
1821
- "type": {
1822
- "text": "LeOptionValue | undefined"
1823
- },
1824
- "description": "The currently selected value."
1825
- },
1826
- {
1827
- "kind": "field",
1828
- "name": "placeholder",
1829
- "type": {
1830
- "text": "string"
1831
- },
1832
- "default": "'Type to search...'",
1833
- "description": "Placeholder text for the input."
1834
- },
1835
- {
1836
- "kind": "field",
1837
- "name": "disabled",
1838
- "type": {
1839
- "text": "boolean"
1840
- },
1841
- "default": "false",
1842
- "description": "Whether the combobox is disabled."
1843
- },
1844
- {
1845
- "kind": "field",
1846
- "name": "required",
1847
- "type": {
1848
- "text": "boolean"
1849
- },
1850
- "default": "false",
1851
- "description": "Whether selection is required."
1852
- },
1853
- {
1854
- "kind": "field",
1855
- "name": "name",
1856
- "type": {
1857
- "text": "string | undefined"
1858
- },
1859
- "description": "Name attribute for form submission."
1860
- },
1861
- {
1862
- "kind": "field",
1863
- "name": "fullWidth",
1864
- "type": {
1865
- "text": "boolean"
1866
- },
1867
- "default": "false",
1868
- "description": "Whether the multiselect should take full width of its container."
1869
- },
1870
- {
1871
- "kind": "field",
1872
- "name": "size",
1873
- "type": {
1874
- "text": "'small' | 'medium' | 'large'"
1875
- },
1876
- "default": "'medium'",
1877
- "description": "Size variant of the combobox."
1878
- },
1879
- {
1880
- "kind": "field",
1881
- "name": "allowCustom",
1882
- "type": {
1883
- "text": "boolean"
1884
- },
1885
- "default": "false",
1886
- "description": "Whether to allow custom values not in the options list."
1887
- },
2171
+ "description": "Animated show/hide wrapper.\n\nSupports height collapse (auto->0) and/or fading.\nCan optionally listen to the nearest `le-header` shrink events.",
2172
+ "name": "LeCollapse",
2173
+ "cssProperties": [
1888
2174
  {
1889
- "kind": "field",
1890
- "name": "minSearchLength",
1891
- "type": {
1892
- "text": "number"
1893
- },
1894
- "default": "0",
1895
- "description": "Minimum characters before showing filtered results."
1896
- },
2175
+ "description": "Transition duration",
2176
+ "name": "--le-collapse-duration"
2177
+ }
2178
+ ],
2179
+ "cssParts": [
1897
2180
  {
1898
- "kind": "field",
1899
- "name": "emptyText",
1900
- "type": {
1901
- "text": "string"
1902
- },
1903
- "default": "'No results found'",
1904
- "description": "Text to show when no options match the search."
2181
+ "description": "Collapsible region",
2182
+ "name": "region"
1905
2183
  },
1906
2184
  {
1907
- "kind": "field",
1908
- "name": "open",
1909
- "type": {
1910
- "text": "boolean"
1911
- },
1912
- "default": "false",
1913
- "description": "Whether the dropdown is currently open."
1914
- },
2185
+ "description": "Inner content",
2186
+ "name": "content"
2187
+ }
2188
+ ],
2189
+ "slots": [
1915
2190
  {
1916
- "kind": "method",
1917
- "name": "handleWindowClick",
1918
- "parameters": [
1919
- {
1920
- "name": "event",
1921
- "type": {
1922
- "text": "MouseEvent"
1923
- }
1924
- }
1925
- ]
1926
- },
2191
+ "description": "Content to animate",
2192
+ "name": ""
2193
+ }
2194
+ ],
2195
+ "members": [
1927
2196
  {
1928
2197
  "kind": "field",
1929
- "name": "inputValue",
2198
+ "name": "el",
1930
2199
  "type": {
1931
- "text": "string"
1932
- },
1933
- "privacy": "private",
1934
- "default": "''"
2200
+ "text": "HTMLElement"
2201
+ }
1935
2202
  },
1936
2203
  {
1937
2204
  "kind": "field",
1938
- "name": "selectedOption",
2205
+ "name": "closed",
1939
2206
  "type": {
1940
- "text": "LeOption | undefined"
2207
+ "text": "boolean"
1941
2208
  },
1942
- "privacy": "private"
2209
+ "default": "false",
2210
+ "description": "Since Stencil boolean props default to `false` when the attribute is missing.\ninstead of `open` defaulting to `true`, using a `closed` prop."
1943
2211
  },
1944
2212
  {
1945
2213
  "kind": "field",
1946
- "name": "dropdownEl",
2214
+ "name": "scrollDown",
1947
2215
  "type": {
1948
- "text": "HTMLLeDropdownBaseElement | undefined"
2216
+ "text": "boolean"
1949
2217
  },
1950
- "privacy": "private"
2218
+ "default": "false",
2219
+ "description": "Whether the content should scroll down from the top when open."
1951
2220
  },
1952
2221
  {
1953
2222
  "kind": "field",
1954
- "name": "inputEl",
2223
+ "name": "noFading",
1955
2224
  "type": {
1956
- "text": "HTMLInputElement | undefined"
2225
+ "text": "boolean"
1957
2226
  },
1958
- "privacy": "private"
2227
+ "default": "false",
2228
+ "description": "Stop fading the content when collapsing/expanding."
1959
2229
  },
1960
2230
  {
1961
- "kind": "method",
1962
- "name": "handleValueChange"
2231
+ "kind": "field",
2232
+ "name": "collapseOnHeaderShrink",
2233
+ "type": {
2234
+ "text": "boolean"
2235
+ },
2236
+ "default": "false",
2237
+ "description": "If true, collapse/expand based on the nearest header shrink event."
1963
2238
  },
1964
2239
  {
1965
2240
  "kind": "method",
1966
- "name": "handleOptionsChange"
2241
+ "name": "handleHeaderShrink",
2242
+ "parameters": [
2243
+ {
2244
+ "name": "ev",
2245
+ "type": {
2246
+ "text": "Event"
2247
+ }
2248
+ }
2249
+ ],
2250
+ "description": "Handles `leHeaderShrinkChange` events from the `le-header`.\nIn case multiple headers are present, only the nearest one in the DOM tree is used."
1967
2251
  },
1968
2252
  {
1969
2253
  "kind": "field",
1970
- "name": "parsedOptions",
2254
+ "name": "headerShrunk",
1971
2255
  "type": {
1972
- "text": "LeOption[]"
2256
+ "text": "boolean"
1973
2257
  },
1974
2258
  "privacy": "private",
1975
- "readonly": true
2259
+ "default": "false"
1976
2260
  },
1977
2261
  {
1978
2262
  "kind": "method",
1979
- "name": "updateSelectedOption",
1980
- "privacy": "private"
1981
- },
1982
- {
1983
- "kind": "field",
1984
- "name": "filterOption",
1985
- "privacy": "private"
1986
- },
1987
- {
1988
- "kind": "field",
1989
- "name": "handleOptionSelect",
1990
- "privacy": "private"
1991
- },
1992
- {
1993
- "kind": "field",
1994
- "name": "handleDropdownOpen",
1995
- "privacy": "private"
1996
- },
1997
- {
1998
- "kind": "field",
1999
- "name": "handleDropdownClose",
2000
- "privacy": "private"
2001
- },
2002
- {
2003
- "kind": "field",
2004
- "name": "handleInputChange",
2005
- "privacy": "private"
2006
- },
2007
- {
2008
- "kind": "field",
2009
- "name": "handleInputFocus",
2010
- "privacy": "private"
2011
- },
2012
- {
2013
- "kind": "field",
2014
- "name": "handleInputKeyDown",
2015
- "privacy": "private"
2016
- },
2017
- {
2018
- "kind": "field",
2019
- "name": "handleClear",
2020
- "privacy": "private"
2263
+ "name": "onOpenChange",
2264
+ "privacy": "protected"
2021
2265
  },
2022
2266
  {
2023
2267
  "kind": "method",
2024
- "name": "showDropdown",
2025
- "description": "Opens the dropdown."
2268
+ "name": "onDrivenStateChange",
2269
+ "privacy": "protected"
2026
2270
  },
2027
2271
  {
2028
2272
  "kind": "method",
2029
- "name": "hideDropdown",
2030
- "description": "Closes the dropdown."
2273
+ "name": "shouldBeOpen",
2274
+ "privacy": "private"
2031
2275
  },
2032
2276
  {
2033
2277
  "kind": "method",
2034
- "name": "focusInput",
2035
- "description": "Focuses the input element."
2278
+ "name": "applyOpenState",
2279
+ "privacy": "private"
2036
2280
  },
2037
2281
  {
2038
2282
  "kind": "method",
@@ -2041,177 +2285,100 @@
2041
2285
  ],
2042
2286
  "attributes": [
2043
2287
  {
2044
- "name": "options",
2045
- "fieldName": "options",
2046
- "default": "[]",
2047
- "description": "The options to display in the dropdown.",
2048
- "type": {
2049
- "text": "LeOption[] | string"
2050
- }
2051
- },
2052
- {
2053
- "name": "value",
2054
- "fieldName": "value",
2055
- "description": "The currently selected value.",
2056
- "type": {
2057
- "text": "LeOptionValue"
2058
- }
2059
- },
2060
- {
2061
- "name": "placeholder",
2062
- "fieldName": "placeholder",
2063
- "default": "'Type to search...'",
2064
- "description": "Placeholder text for the input.",
2065
- "type": {
2066
- "text": "string"
2067
- }
2068
- },
2069
- {
2070
- "name": "disabled",
2071
- "fieldName": "disabled",
2072
- "default": "false",
2073
- "description": "Whether the combobox is disabled.",
2074
- "type": {
2075
- "text": "boolean"
2076
- }
2077
- },
2078
- {
2079
- "name": "required",
2080
- "fieldName": "required",
2288
+ "name": "closed",
2289
+ "fieldName": "closed",
2081
2290
  "default": "false",
2082
- "description": "Whether selection is required.",
2291
+ "description": "Since Stencil boolean props default to `false` when the attribute is missing.\ninstead of `open` defaulting to `true`, using a `closed` prop.",
2083
2292
  "type": {
2084
2293
  "text": "boolean"
2085
2294
  }
2086
2295
  },
2087
2296
  {
2088
- "name": "name",
2089
- "fieldName": "name",
2090
- "description": "Name attribute for form submission.",
2091
- "type": {
2092
- "text": "string"
2093
- }
2094
- },
2095
- {
2096
- "name": "full-width",
2097
- "fieldName": "fullWidth",
2297
+ "name": "scroll-down",
2298
+ "fieldName": "scrollDown",
2098
2299
  "default": "false",
2099
- "description": "Whether the multiselect should take full width of its container.",
2300
+ "description": "Whether the content should scroll down from the top when open.",
2100
2301
  "type": {
2101
2302
  "text": "boolean"
2102
2303
  }
2103
2304
  },
2104
2305
  {
2105
- "name": "size",
2106
- "fieldName": "size",
2107
- "default": "'medium'",
2108
- "description": "Size variant of the combobox.",
2109
- "type": {
2110
- "text": "'small' | 'medium' | 'large'"
2111
- }
2112
- },
2113
- {
2114
- "name": "allow-custom",
2115
- "fieldName": "allowCustom",
2306
+ "name": "no-fading",
2307
+ "fieldName": "noFading",
2116
2308
  "default": "false",
2117
- "description": "Whether to allow custom values not in the options list.",
2309
+ "description": "Stop fading the content when collapsing/expanding.",
2118
2310
  "type": {
2119
2311
  "text": "boolean"
2120
2312
  }
2121
2313
  },
2122
2314
  {
2123
- "name": "min-search-length",
2124
- "fieldName": "minSearchLength",
2125
- "default": "0",
2126
- "description": "Minimum characters before showing filtered results.",
2127
- "type": {
2128
- "text": "number"
2129
- }
2130
- },
2131
- {
2132
- "name": "empty-text",
2133
- "fieldName": "emptyText",
2134
- "default": "'No results found'",
2135
- "description": "Text to show when no options match the search.",
2136
- "type": {
2137
- "text": "string"
2138
- }
2139
- },
2140
- {
2141
- "name": "open",
2142
- "fieldName": "open",
2315
+ "name": "collapse-on-header-shrink",
2316
+ "fieldName": "collapseOnHeaderShrink",
2143
2317
  "default": "false",
2144
- "description": "Whether the dropdown is currently open.",
2318
+ "description": "If true, collapse/expand based on the nearest header shrink event.",
2145
2319
  "type": {
2146
2320
  "text": "boolean"
2147
2321
  }
2148
2322
  }
2149
2323
  ],
2150
- "tagName": "le-combobox",
2151
- "events": [
2152
- {
2153
- "name": "leChange",
2154
- "type": {
2155
- "text": "EventEmitter<LeOptionSelectDetail>"
2156
- },
2157
- "description": "Emitted when the selected value changes."
2158
- },
2159
- {
2160
- "name": "leInput",
2161
- "type": {
2162
- "text": "EventEmitter<{ value: string }>"
2163
- },
2164
- "description": "Emitted when the input value changes (for custom values)."
2165
- },
2166
- {
2167
- "name": "leOpen",
2168
- "type": {
2169
- "text": "EventEmitter<void>"
2170
- },
2171
- "description": "Emitted when the dropdown opens."
2172
- },
2173
- {
2174
- "name": "leClose",
2175
- "type": {
2176
- "text": "EventEmitter<void>"
2177
- },
2178
- "description": "Emitted when the dropdown closes."
2179
- }
2180
- ],
2324
+ "tagName": "le-collapse",
2325
+ "events": [],
2181
2326
  "customElement": true
2182
2327
  }
2183
2328
  ],
2184
2329
  "exports": [
2185
2330
  {
2186
2331
  "kind": "js",
2187
- "name": "LeCombobox",
2332
+ "name": "LeCollapse",
2188
2333
  "declaration": {
2189
- "name": "LeCombobox",
2190
- "module": "src/components/le-combobox/le-combobox.tsx"
2334
+ "name": "LeCollapse",
2335
+ "module": "src/components/le-collapse/le-collapse.tsx"
2191
2336
  }
2192
2337
  },
2193
2338
  {
2194
2339
  "kind": "custom-element-definition",
2195
- "name": "le-combobox",
2340
+ "name": "le-collapse",
2196
2341
  "declaration": {
2197
- "name": "LeCombobox",
2198
- "module": "src/components/le-combobox/le-combobox.tsx"
2342
+ "name": "LeCollapse",
2343
+ "module": "src/components/le-collapse/le-collapse.tsx"
2199
2344
  }
2200
2345
  }
2201
2346
  ]
2202
2347
  },
2203
2348
  {
2204
2349
  "kind": "javascript-module",
2205
- "path": "src/components/le-component/le-component.tsx",
2350
+ "path": "src/components/le-checkbox/le-checkbox.tsx",
2206
2351
  "declarations": [
2207
2352
  {
2208
2353
  "kind": "class",
2209
- "description": "Component wrapper for admin mode editing.\n\nThis component is used internally by other components to provide admin-mode\nediting capabilities. It wraps the component's rendered output and shows\na settings popover for editing properties.\n\nIn default mode, it acts as a simple passthrough (display: contents).\nIn admin mode, it shows a border, component name header, and settings popover.\n\nThe host element is found automatically by traversing up through the shadow DOM.\n\nUsage inside a component's render method:\n```tsx\nrender() {\n return (\n <le-component component=\"le-card\">\n <Host>...</Host>\n </le-component>\n );\n}\n```",
2210
- "name": "LeComponent",
2354
+ "description": "A checkbox component with support for labels, descriptions, and external IDs.",
2355
+ "name": "LeCheckbox",
2356
+ "cssProperties": [
2357
+ {
2358
+ "description": "Size of the checkbox input",
2359
+ "name": "--le-checkbox-size"
2360
+ },
2361
+ {
2362
+ "description": "Color of the checkbox when checked",
2363
+ "name": "--le-checkbox-color"
2364
+ },
2365
+ {
2366
+ "description": "Color of the label text",
2367
+ "name": "--le-checkbox-label-color"
2368
+ },
2369
+ {
2370
+ "description": "Color of the description text",
2371
+ "name": "--le-checkbox-desc-color"
2372
+ }
2373
+ ],
2211
2374
  "slots": [
2212
2375
  {
2213
- "description": "The component's rendered content",
2376
+ "description": "The label text for the checkbox",
2214
2377
  "name": ""
2378
+ },
2379
+ {
2380
+ "description": "Additional description text displayed below the label",
2381
+ "name": "description"
2215
2382
  }
2216
2383
  ],
2217
2384
  "members": [
@@ -2224,217 +2391,50 @@
2224
2391
  },
2225
2392
  {
2226
2393
  "kind": "field",
2227
- "name": "component",
2228
- "type": {
2229
- "text": "string"
2230
- },
2231
- "description": "The tag name of the component (e.g., 'le-card').\nUsed to look up property metadata and display the component name."
2232
- },
2233
- {
2234
- "kind": "field",
2235
- "name": "displayName",
2236
- "type": {
2237
- "text": "string | undefined"
2238
- },
2239
- "description": "Optional display name for the component.\nIf not provided, the tag name will be formatted as the display name."
2240
- },
2241
- {
2242
- "kind": "field",
2243
- "name": "hostClass",
2244
- "type": {
2245
- "text": "string | undefined"
2246
- },
2247
- "description": "Classes to apply to the host element.\nAllows parent components to pass their styling classes."
2248
- },
2249
- {
2250
- "kind": "field",
2251
- "name": "hostStyle",
2252
- "type": {
2253
- "text": "{ [key: string]: string } | undefined"
2254
- },
2255
- "description": "Inline styles to apply to the host element.\nAllows parent components to pass dynamic styles (e.g., flex properties)."
2256
- },
2257
- {
2258
- "kind": "field",
2259
- "name": "hostElement",
2394
+ "name": "checked",
2260
2395
  "type": {
2261
- "text": "HTMLElement | undefined"
2396
+ "text": "boolean"
2262
2397
  },
2263
- "privacy": "private",
2264
- "description": "Reference to the host element (found automatically from parent)"
2398
+ "default": "false",
2399
+ "description": "Whether the checkbox is checked"
2265
2400
  },
2266
2401
  {
2267
2402
  "kind": "field",
2268
- "name": "adminMode",
2403
+ "name": "disabled",
2269
2404
  "type": {
2270
2405
  "text": "boolean"
2271
2406
  },
2272
- "privacy": "private",
2273
2407
  "default": "false",
2274
- "description": "Internal state to track admin mode"
2408
+ "description": "Whether the checkbox is disabled"
2275
2409
  },
2276
2410
  {
2277
2411
  "kind": "field",
2278
- "name": "componentMeta",
2412
+ "name": "name",
2279
2413
  "type": {
2280
- "text": "ComponentMetadata | null"
2414
+ "text": "string"
2281
2415
  },
2282
- "privacy": "private",
2283
- "default": "null",
2284
- "description": "Component metadata loaded from Custom Elements Manifest"
2416
+ "description": "The name of the checkbox input"
2285
2417
  },
2286
2418
  {
2287
2419
  "kind": "field",
2288
- "name": "propertyValues",
2420
+ "name": "value",
2289
2421
  "type": {
2290
- "text": "Record<string, any>"
2422
+ "text": "string"
2291
2423
  },
2292
- "privacy": "private",
2293
- "default": "{}",
2294
- "description": "Current property values of the host component"
2424
+ "description": "The value of the checkbox input"
2295
2425
  },
2296
2426
  {
2297
2427
  "kind": "field",
2298
- "name": "disconnectModeObserver",
2428
+ "name": "externalId",
2299
2429
  "type": {
2300
- "text": "() => void | undefined"
2301
- },
2302
- "privacy": "private"
2303
- },
2304
- {
2305
- "kind": "method",
2306
- "name": "findHostElement",
2307
- "privacy": "private",
2308
- "description": "Find the host element by traversing up through shadow DOM"
2309
- },
2310
- {
2311
- "kind": "method",
2312
- "name": "formatDisplayName",
2313
- "privacy": "private",
2314
- "return": {
2315
- "type": {
2316
- "text": "string"
2317
- }
2318
- },
2319
- "parameters": [
2320
- {
2321
- "name": "tagName",
2322
- "type": {
2323
- "text": "string"
2324
- }
2325
- }
2326
- ],
2327
- "description": "Formats a tag name into a display name\ne.g., 'le-card' -> 'Card'"
2328
- },
2329
- {
2330
- "kind": "method",
2331
- "name": "loadComponentMetadata",
2332
- "privacy": "private",
2333
- "description": "Load component metadata from the Custom Elements Manifest"
2334
- },
2335
- {
2336
- "kind": "method",
2337
- "name": "isInternalAttribute",
2338
- "privacy": "private",
2339
- "return": {
2340
- "type": {
2341
- "text": "boolean"
2342
- }
2343
- },
2344
- "parameters": [
2345
- {
2346
- "name": "name",
2347
- "type": {
2348
- "text": "string"
2349
- }
2350
- }
2351
- ],
2352
- "description": "Check if an attribute is internal (should not be shown in editor)"
2353
- },
2354
- {
2355
- "kind": "method",
2356
- "name": "readPropertyValues",
2357
- "privacy": "private",
2358
- "description": "Read current property values from the host element"
2359
- },
2360
- {
2361
- "kind": "method",
2362
- "name": "parseAttributeValue",
2363
- "privacy": "private",
2364
- "return": {
2365
- "type": {
2366
- "text": "any"
2367
- }
2430
+ "text": "string"
2368
2431
  },
2369
- "parameters": [
2370
- {
2371
- "name": "value",
2372
- "type": {
2373
- "text": "string | null"
2374
- }
2375
- },
2376
- {
2377
- "name": "type",
2378
- "optional": true,
2379
- "type": {
2380
- "text": "string"
2381
- }
2382
- }
2383
- ],
2384
- "description": "Parse an attribute value based on its type"
2385
- },
2386
- {
2387
- "kind": "method",
2388
- "name": "handlePropertyChange",
2389
- "privacy": "private",
2390
- "parameters": [
2391
- {
2392
- "name": "attrName",
2393
- "type": {
2394
- "text": "string"
2395
- }
2396
- },
2397
- {
2398
- "name": "value",
2399
- "type": {
2400
- "text": "any"
2401
- }
2402
- },
2403
- {
2404
- "name": "type",
2405
- "optional": true,
2406
- "type": {
2407
- "text": "string"
2408
- }
2409
- }
2410
- ],
2411
- "description": "Handle property value changes from the editor"
2412
- },
2413
- {
2414
- "kind": "method",
2415
- "name": "deleteComponent",
2416
- "privacy": "private",
2417
- "description": "Delete this component from the DOM"
2418
- },
2419
- {
2420
- "kind": "method",
2421
- "name": "renderPropertyEditor",
2422
- "privacy": "private",
2423
- "description": "Render the property editor form"
2432
+ "description": "External ID for linking with external systems (e.g. database ID, PDF form field ID)"
2424
2433
  },
2425
2434
  {
2426
- "kind": "method",
2427
- "name": "renderPropertyField",
2428
- "privacy": "private",
2429
- "parameters": [
2430
- {
2431
- "name": "attr",
2432
- "type": {
2433
- "text": "AttributeMetadata"
2434
- }
2435
- }
2436
- ],
2437
- "description": "Render a single property field based on its type"
2435
+ "kind": "field",
2436
+ "name": "handleChange",
2437
+ "privacy": "private"
2438
2438
  },
2439
2439
  {
2440
2440
  "kind": "method",
@@ -2443,58 +2443,76 @@
2443
2443
  ],
2444
2444
  "attributes": [
2445
2445
  {
2446
- "name": "component",
2447
- "fieldName": "component",
2448
- "description": "The tag name of the component (e.g., 'le-card').\nUsed to look up property metadata and display the component name.",
2446
+ "name": "checked",
2447
+ "fieldName": "checked",
2448
+ "default": "false",
2449
+ "description": "Whether the checkbox is checked",
2450
+ "type": {
2451
+ "text": "boolean"
2452
+ }
2453
+ },
2454
+ {
2455
+ "name": "disabled",
2456
+ "fieldName": "disabled",
2457
+ "default": "false",
2458
+ "description": "Whether the checkbox is disabled",
2459
+ "type": {
2460
+ "text": "boolean"
2461
+ }
2462
+ },
2463
+ {
2464
+ "name": "name",
2465
+ "fieldName": "name",
2466
+ "description": "The name of the checkbox input",
2449
2467
  "type": {
2450
2468
  "text": "string"
2451
2469
  }
2452
2470
  },
2453
2471
  {
2454
- "name": "display-name",
2455
- "fieldName": "displayName",
2456
- "description": "Optional display name for the component.\nIf not provided, the tag name will be formatted as the display name.",
2472
+ "name": "value",
2473
+ "fieldName": "value",
2474
+ "description": "The value of the checkbox input",
2457
2475
  "type": {
2458
2476
  "text": "string"
2459
2477
  }
2460
2478
  },
2461
2479
  {
2462
- "name": "host-class",
2463
- "fieldName": "hostClass",
2464
- "description": "Classes to apply to the host element.\nAllows parent components to pass their styling classes.",
2480
+ "name": "external-id",
2481
+ "fieldName": "externalId",
2482
+ "description": "External ID for linking with external systems (e.g. database ID, PDF form field ID)",
2465
2483
  "type": {
2466
2484
  "text": "string"
2467
2485
  }
2468
- },
2486
+ }
2487
+ ],
2488
+ "tagName": "le-checkbox",
2489
+ "events": [
2469
2490
  {
2470
- "name": "host-style",
2471
- "fieldName": "hostStyle",
2472
- "description": "Inline styles to apply to the host element.\nAllows parent components to pass dynamic styles (e.g., flex properties).",
2491
+ "name": "change",
2473
2492
  "type": {
2474
- "text": "{ [key: string]: string }"
2475
- }
2493
+ "text": "EventEmitter<{ checked: boolean; value: string; name: string; externalId: string }>"
2494
+ },
2495
+ "description": "Emitted when the checked state changes"
2476
2496
  }
2477
2497
  ],
2478
- "tagName": "le-component",
2479
- "events": [],
2480
2498
  "customElement": true
2481
2499
  }
2482
2500
  ],
2483
2501
  "exports": [
2484
2502
  {
2485
2503
  "kind": "js",
2486
- "name": "LeComponent",
2504
+ "name": "LeCheckbox",
2487
2505
  "declaration": {
2488
- "name": "LeComponent",
2489
- "module": "src/components/le-component/le-component.tsx"
2506
+ "name": "LeCheckbox",
2507
+ "module": "src/components/le-checkbox/le-checkbox.tsx"
2490
2508
  }
2491
2509
  },
2492
2510
  {
2493
2511
  "kind": "custom-element-definition",
2494
- "name": "le-component",
2512
+ "name": "le-checkbox",
2495
2513
  "declaration": {
2496
- "name": "LeComponent",
2497
- "module": "src/components/le-component/le-component.tsx"
2514
+ "name": "LeCheckbox",
2515
+ "module": "src/components/le-checkbox/le-checkbox.tsx"
2498
2516
  }
2499
2517
  }
2500
2518
  ]
@@ -7250,7 +7268,7 @@
7250
7268
  "tagName": "le-select",
7251
7269
  "events": [
7252
7270
  {
7253
- "name": "leChange",
7271
+ "name": "change",
7254
7272
  "type": {
7255
7273
  "text": "EventEmitter<LeOptionSelectDetail>"
7256
7274
  },
@@ -9079,263 +9097,36 @@
9079
9097
  "type": {
9080
9098
  "text": "boolean"
9081
9099
  }
9082
- }
9083
- ],
9084
- "tagName": "le-tab-bar",
9085
- "events": [
9086
- {
9087
- "name": "leTabChange",
9088
- "type": {
9089
- "text": "EventEmitter<LeOptionSelectDetail>"
9090
- },
9091
- "description": "Emitted when the selected tab changes."
9092
- }
9093
- ],
9094
- "customElement": true
9095
- }
9096
- ],
9097
- "exports": [
9098
- {
9099
- "kind": "js",
9100
- "name": "LeTabBar",
9101
- "declaration": {
9102
- "name": "LeTabBar",
9103
- "module": "src/components/le-tab-bar/le-tab-bar.tsx"
9104
- }
9105
- },
9106
- {
9107
- "kind": "custom-element-definition",
9108
- "name": "le-tab-bar",
9109
- "declaration": {
9110
- "name": "LeTabBar",
9111
- "module": "src/components/le-tab-bar/le-tab-bar.tsx"
9112
- }
9113
- }
9114
- ]
9115
- },
9116
- {
9117
- "kind": "javascript-module",
9118
- "path": "src/components/le-tab-panel/le-tab-panel.tsx",
9119
- "declarations": [
9120
- {
9121
- "kind": "class",
9122
- "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.",
9123
- "name": "LeTabPanel",
9124
- "slots": [
9125
- {
9126
- "description": "Default slot for panel content",
9127
- "name": ""
9128
- }
9129
- ],
9130
- "members": [
9131
- {
9132
- "kind": "field",
9133
- "name": "el",
9134
- "type": {
9135
- "text": "HTMLLeTabPanelElement"
9136
- }
9137
- },
9138
- {
9139
- "kind": "field",
9140
- "name": "label",
9141
- "type": {
9142
- "text": "string"
9143
- },
9144
- "description": "The label displayed in the tab button."
9145
- },
9146
- {
9147
- "kind": "field",
9148
- "name": "value",
9149
- "type": {
9150
- "text": "string | undefined"
9151
- },
9152
- "description": "The value used to identify this tab.\nDefaults to the label if not provided."
9153
- },
9154
- {
9155
- "kind": "field",
9156
- "name": "iconStart",
9157
- "type": {
9158
- "text": "string | undefined"
9159
- },
9160
- "description": "Icon displayed at the start of the tab button.\nCan be an emoji, URL, or icon class."
9161
- },
9162
- {
9163
- "kind": "field",
9164
- "name": "iconEnd",
9165
- "type": {
9166
- "text": "string | undefined"
9167
- },
9168
- "description": "Icon displayed at the end of the tab button."
9169
- },
9170
- {
9171
- "kind": "field",
9172
- "name": "disabled",
9173
- "type": {
9174
- "text": "boolean"
9175
- },
9176
- "default": "false",
9177
- "description": "Whether this tab is disabled."
9178
- },
9179
- {
9180
- "kind": "field",
9181
- "name": "lazy",
9182
- "type": {
9183
- "text": "boolean"
9184
- },
9185
- "default": "false",
9186
- "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."
9187
- },
9188
- {
9189
- "kind": "field",
9190
- "name": "active",
9191
- "type": {
9192
- "text": "boolean"
9193
- },
9194
- "default": "false",
9195
- "description": "Internal: Whether this panel is currently active (set by parent le-tabs)"
9196
- },
9197
- {
9198
- "kind": "field",
9199
- "name": "hasBeenActive",
9200
- "type": {
9201
- "text": "boolean"
9202
- },
9203
- "default": "false",
9204
- "description": "Internal: Track if panel has ever been activated (for lazy rendering)"
9205
- },
9206
- {
9207
- "kind": "method",
9208
- "name": "activeChanged",
9209
- "parameters": [
9210
- {
9211
- "name": "isActive",
9212
- "type": {
9213
- "text": "boolean"
9214
- }
9215
- }
9216
- ]
9217
- },
9218
- {
9219
- "kind": "method",
9220
- "name": "getValue",
9221
- "return": {
9222
- "type": {
9223
- "text": "Promise<string>"
9224
- }
9225
- },
9226
- "description": "Get the effective value (value or label as fallback)"
9227
- },
9228
- {
9229
- "kind": "method",
9230
- "name": "getTabConfig",
9231
- "return": {
9232
- "type": {
9233
- "text": "Promise<{\n label: string;\n value: string;\n iconStart?: string;\n iconEnd?: string;\n disabled: boolean;\n }>"
9234
- }
9235
- },
9236
- "description": "Get tab configuration for parent component"
9237
- },
9238
- {
9239
- "kind": "method",
9240
- "name": "setActive",
9241
- "parameters": [
9242
- {
9243
- "name": "isActive",
9244
- "type": {
9245
- "text": "boolean"
9246
- }
9247
- }
9248
- ],
9249
- "description": "Set the active state (called by parent le-tabs)"
9250
- },
9251
- {
9252
- "kind": "method",
9253
- "name": "shouldRenderContent",
9254
- "privacy": "private",
9255
- "return": {
9256
- "type": {
9257
- "text": "boolean"
9258
- }
9259
- },
9260
- "description": "Check if panel should render content"
9261
- },
9262
- {
9263
- "kind": "method",
9264
- "name": "render"
9265
- }
9266
- ],
9267
- "attributes": [
9268
- {
9269
- "name": "label",
9270
- "fieldName": "label",
9271
- "description": "The label displayed in the tab button.",
9272
- "type": {
9273
- "text": "string"
9274
- }
9275
- },
9276
- {
9277
- "name": "value",
9278
- "fieldName": "value",
9279
- "description": "The value used to identify this tab.\nDefaults to the label if not provided.",
9280
- "type": {
9281
- "text": "string"
9282
- }
9283
- },
9284
- {
9285
- "name": "icon-start",
9286
- "fieldName": "iconStart",
9287
- "description": "Icon displayed at the start of the tab button.\nCan be an emoji, URL, or icon class.",
9288
- "type": {
9289
- "text": "string"
9290
- }
9291
- },
9292
- {
9293
- "name": "icon-end",
9294
- "fieldName": "iconEnd",
9295
- "description": "Icon displayed at the end of the tab button.",
9296
- "type": {
9297
- "text": "string"
9298
- }
9299
- },
9300
- {
9301
- "name": "disabled",
9302
- "fieldName": "disabled",
9303
- "default": "false",
9304
- "description": "Whether this tab is disabled.",
9305
- "type": {
9306
- "text": "boolean"
9307
- }
9308
- },
9100
+ }
9101
+ ],
9102
+ "tagName": "le-tab-bar",
9103
+ "events": [
9309
9104
  {
9310
- "name": "lazy",
9311
- "fieldName": "lazy",
9312
- "default": "false",
9313
- "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.",
9105
+ "name": "leTabChange",
9314
9106
  "type": {
9315
- "text": "boolean"
9316
- }
9107
+ "text": "EventEmitter<LeOptionSelectDetail>"
9108
+ },
9109
+ "description": "Emitted when the selected tab changes."
9317
9110
  }
9318
9111
  ],
9319
- "tagName": "le-tab-panel",
9320
- "events": [],
9321
9112
  "customElement": true
9322
9113
  }
9323
9114
  ],
9324
9115
  "exports": [
9325
9116
  {
9326
9117
  "kind": "js",
9327
- "name": "LeTabPanel",
9118
+ "name": "LeTabBar",
9328
9119
  "declaration": {
9329
- "name": "LeTabPanel",
9330
- "module": "src/components/le-tab-panel/le-tab-panel.tsx"
9120
+ "name": "LeTabBar",
9121
+ "module": "src/components/le-tab-bar/le-tab-bar.tsx"
9331
9122
  }
9332
9123
  },
9333
9124
  {
9334
9125
  "kind": "custom-element-definition",
9335
- "name": "le-tab-panel",
9126
+ "name": "le-tab-bar",
9336
9127
  "declaration": {
9337
- "name": "LeTabPanel",
9338
- "module": "src/components/le-tab-panel/le-tab-panel.tsx"
9128
+ "name": "LeTabBar",
9129
+ "module": "src/components/le-tab-bar/le-tab-bar.tsx"
9339
9130
  }
9340
9131
  }
9341
9132
  ]
@@ -9751,6 +9542,233 @@
9751
9542
  }
9752
9543
  ]
9753
9544
  },
9545
+ {
9546
+ "kind": "javascript-module",
9547
+ "path": "src/components/le-tab-panel/le-tab-panel.tsx",
9548
+ "declarations": [
9549
+ {
9550
+ "kind": "class",
9551
+ "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.",
9552
+ "name": "LeTabPanel",
9553
+ "slots": [
9554
+ {
9555
+ "description": "Default slot for panel content",
9556
+ "name": ""
9557
+ }
9558
+ ],
9559
+ "members": [
9560
+ {
9561
+ "kind": "field",
9562
+ "name": "el",
9563
+ "type": {
9564
+ "text": "HTMLLeTabPanelElement"
9565
+ }
9566
+ },
9567
+ {
9568
+ "kind": "field",
9569
+ "name": "label",
9570
+ "type": {
9571
+ "text": "string"
9572
+ },
9573
+ "description": "The label displayed in the tab button."
9574
+ },
9575
+ {
9576
+ "kind": "field",
9577
+ "name": "value",
9578
+ "type": {
9579
+ "text": "string | undefined"
9580
+ },
9581
+ "description": "The value used to identify this tab.\nDefaults to the label if not provided."
9582
+ },
9583
+ {
9584
+ "kind": "field",
9585
+ "name": "iconStart",
9586
+ "type": {
9587
+ "text": "string | undefined"
9588
+ },
9589
+ "description": "Icon displayed at the start of the tab button.\nCan be an emoji, URL, or icon class."
9590
+ },
9591
+ {
9592
+ "kind": "field",
9593
+ "name": "iconEnd",
9594
+ "type": {
9595
+ "text": "string | undefined"
9596
+ },
9597
+ "description": "Icon displayed at the end of the tab button."
9598
+ },
9599
+ {
9600
+ "kind": "field",
9601
+ "name": "disabled",
9602
+ "type": {
9603
+ "text": "boolean"
9604
+ },
9605
+ "default": "false",
9606
+ "description": "Whether this tab is disabled."
9607
+ },
9608
+ {
9609
+ "kind": "field",
9610
+ "name": "lazy",
9611
+ "type": {
9612
+ "text": "boolean"
9613
+ },
9614
+ "default": "false",
9615
+ "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."
9616
+ },
9617
+ {
9618
+ "kind": "field",
9619
+ "name": "active",
9620
+ "type": {
9621
+ "text": "boolean"
9622
+ },
9623
+ "default": "false",
9624
+ "description": "Internal: Whether this panel is currently active (set by parent le-tabs)"
9625
+ },
9626
+ {
9627
+ "kind": "field",
9628
+ "name": "hasBeenActive",
9629
+ "type": {
9630
+ "text": "boolean"
9631
+ },
9632
+ "default": "false",
9633
+ "description": "Internal: Track if panel has ever been activated (for lazy rendering)"
9634
+ },
9635
+ {
9636
+ "kind": "method",
9637
+ "name": "activeChanged",
9638
+ "parameters": [
9639
+ {
9640
+ "name": "isActive",
9641
+ "type": {
9642
+ "text": "boolean"
9643
+ }
9644
+ }
9645
+ ]
9646
+ },
9647
+ {
9648
+ "kind": "method",
9649
+ "name": "getValue",
9650
+ "return": {
9651
+ "type": {
9652
+ "text": "Promise<string>"
9653
+ }
9654
+ },
9655
+ "description": "Get the effective value (value or label as fallback)"
9656
+ },
9657
+ {
9658
+ "kind": "method",
9659
+ "name": "getTabConfig",
9660
+ "return": {
9661
+ "type": {
9662
+ "text": "Promise<{\n label: string;\n value: string;\n iconStart?: string;\n iconEnd?: string;\n disabled: boolean;\n }>"
9663
+ }
9664
+ },
9665
+ "description": "Get tab configuration for parent component"
9666
+ },
9667
+ {
9668
+ "kind": "method",
9669
+ "name": "setActive",
9670
+ "parameters": [
9671
+ {
9672
+ "name": "isActive",
9673
+ "type": {
9674
+ "text": "boolean"
9675
+ }
9676
+ }
9677
+ ],
9678
+ "description": "Set the active state (called by parent le-tabs)"
9679
+ },
9680
+ {
9681
+ "kind": "method",
9682
+ "name": "shouldRenderContent",
9683
+ "privacy": "private",
9684
+ "return": {
9685
+ "type": {
9686
+ "text": "boolean"
9687
+ }
9688
+ },
9689
+ "description": "Check if panel should render content"
9690
+ },
9691
+ {
9692
+ "kind": "method",
9693
+ "name": "render"
9694
+ }
9695
+ ],
9696
+ "attributes": [
9697
+ {
9698
+ "name": "label",
9699
+ "fieldName": "label",
9700
+ "description": "The label displayed in the tab button.",
9701
+ "type": {
9702
+ "text": "string"
9703
+ }
9704
+ },
9705
+ {
9706
+ "name": "value",
9707
+ "fieldName": "value",
9708
+ "description": "The value used to identify this tab.\nDefaults to the label if not provided.",
9709
+ "type": {
9710
+ "text": "string"
9711
+ }
9712
+ },
9713
+ {
9714
+ "name": "icon-start",
9715
+ "fieldName": "iconStart",
9716
+ "description": "Icon displayed at the start of the tab button.\nCan be an emoji, URL, or icon class.",
9717
+ "type": {
9718
+ "text": "string"
9719
+ }
9720
+ },
9721
+ {
9722
+ "name": "icon-end",
9723
+ "fieldName": "iconEnd",
9724
+ "description": "Icon displayed at the end of the tab button.",
9725
+ "type": {
9726
+ "text": "string"
9727
+ }
9728
+ },
9729
+ {
9730
+ "name": "disabled",
9731
+ "fieldName": "disabled",
9732
+ "default": "false",
9733
+ "description": "Whether this tab is disabled.",
9734
+ "type": {
9735
+ "text": "boolean"
9736
+ }
9737
+ },
9738
+ {
9739
+ "name": "lazy",
9740
+ "fieldName": "lazy",
9741
+ "default": "false",
9742
+ "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.",
9743
+ "type": {
9744
+ "text": "boolean"
9745
+ }
9746
+ }
9747
+ ],
9748
+ "tagName": "le-tab-panel",
9749
+ "events": [],
9750
+ "customElement": true
9751
+ }
9752
+ ],
9753
+ "exports": [
9754
+ {
9755
+ "kind": "js",
9756
+ "name": "LeTabPanel",
9757
+ "declaration": {
9758
+ "name": "LeTabPanel",
9759
+ "module": "src/components/le-tab-panel/le-tab-panel.tsx"
9760
+ }
9761
+ },
9762
+ {
9763
+ "kind": "custom-element-definition",
9764
+ "name": "le-tab-panel",
9765
+ "declaration": {
9766
+ "name": "LeTabPanel",
9767
+ "module": "src/components/le-tab-panel/le-tab-panel.tsx"
9768
+ }
9769
+ }
9770
+ ]
9771
+ },
9754
9772
  {
9755
9773
  "kind": "javascript-module",
9756
9774
  "path": "src/components/le-tag/le-tag.tsx",