@diwacopilot/components 1.0.0 → 1.1.1
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.
- package/dist/cjs/diwa-checkbox.cjs.entry.js +1 -3
- package/dist/cjs/diwa-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/diwa-components.cjs.js +1 -1
- package/dist/cjs/diwa-heading.cjs.entry.js +126 -0
- package/dist/cjs/diwa-heading.cjs.entry.js.map +1 -0
- package/dist/cjs/diwa-icon.cjs.entry.js +1 -1
- package/dist/cjs/diwa-inline-notification.cjs.entry.js +1 -1
- package/dist/cjs/diwa-input-date.cjs.entry.js +1 -1
- package/dist/cjs/diwa-input-email.cjs.entry.js +1 -1
- package/dist/cjs/diwa-input-month.cjs.entry.js +1 -1
- package/dist/cjs/diwa-input-number.cjs.entry.js +1 -1
- package/dist/cjs/diwa-input-password.cjs.entry.js +1 -1
- package/dist/cjs/diwa-input-search.cjs.entry.js +1 -1
- package/dist/cjs/diwa-input-tel.cjs.entry.js +1 -1
- package/dist/cjs/diwa-input-text.cjs.entry.js +1 -1
- package/dist/cjs/diwa-input-time.cjs.entry.js +1 -1
- package/dist/cjs/diwa-input-url.cjs.entry.js +1 -1
- package/dist/cjs/diwa-input-week.cjs.entry.js +1 -1
- package/dist/cjs/diwa-input.cjs.entry.js +1 -1
- package/dist/cjs/diwa-link-pure.cjs.entry.js +1 -1
- package/dist/cjs/diwa-link.cjs.entry.js +1 -1
- package/dist/cjs/diwa-modal.cjs.entry.js +1 -1
- package/dist/cjs/diwa-multi-select-option.cjs.entry.js +1 -1
- package/dist/cjs/diwa-multi-select.cjs.entry.js +2 -2
- package/dist/cjs/diwa-pagination.cjs.entry.js +1 -1
- package/dist/cjs/diwa-pin-code.cjs.entry.js +2 -2
- package/dist/cjs/diwa-popover.cjs.entry.js +1 -1
- package/dist/cjs/diwa-radio-group-item.cjs.entry.js +2 -3
- package/dist/cjs/diwa-radio-group-item.cjs.entry.js.map +1 -1
- package/dist/cjs/diwa-radio-group.cjs.entry.js +1 -1
- package/dist/cjs/diwa-scroller.cjs.entry.js +23 -13
- package/dist/cjs/diwa-scroller.cjs.entry.js.map +1 -1
- package/dist/cjs/diwa-segmented-control-item.cjs.entry.js +1 -1
- package/dist/cjs/diwa-segmented-control.cjs.entry.js +1 -1
- package/dist/cjs/diwa-select-option.cjs.entry.js +24 -10
- package/dist/cjs/diwa-select-option.cjs.entry.js.map +1 -1
- package/dist/cjs/diwa-select.cjs.entry.js +15 -1
- package/dist/cjs/diwa-select.cjs.entry.js.map +1 -1
- package/dist/cjs/diwa-spinner.cjs.entry.js +1 -1
- package/dist/cjs/diwa-stepper-horizontal-item.cjs.entry.js +1 -1
- package/dist/cjs/diwa-stepper-horizontal.cjs.entry.js +1 -1
- package/dist/cjs/diwa-switch.cjs.entry.js +1 -1
- package/dist/cjs/diwa-table-body.cjs.entry.js +1 -1
- package/dist/cjs/diwa-table-cell.cjs.entry.js +15 -15
- package/dist/cjs/diwa-table-cell.cjs.entry.js.map +1 -1
- package/dist/cjs/diwa-table-head-cell.cjs.entry.js +64 -53
- package/dist/cjs/diwa-table-head-cell.cjs.entry.js.map +1 -1
- package/dist/cjs/diwa-table-head.cjs.entry.js +16 -11
- package/dist/cjs/diwa-table-head.cjs.entry.js.map +1 -1
- package/dist/cjs/diwa-table-row.cjs.entry.js +11 -10
- package/dist/cjs/diwa-table-row.cjs.entry.js.map +1 -1
- package/dist/cjs/diwa-table.cjs.entry.js +83 -43
- package/dist/cjs/diwa-table.cjs.entry.js.map +1 -1
- package/dist/cjs/diwa-tabs-bar.cjs.entry.js +1 -1
- package/dist/cjs/diwa-tabs-item.cjs.entry.js +1 -1
- package/dist/cjs/diwa-tabs.cjs.entry.js +12 -12
- package/dist/cjs/diwa-tabs.cjs.entry.js.map +1 -1
- package/dist/cjs/diwa-tag-dismissible.cjs.entry.js +6 -8
- package/dist/cjs/diwa-tag-dismissible.cjs.entry.js.map +1 -1
- package/dist/cjs/diwa-tag.cjs.entry.js +2 -2
- package/dist/cjs/diwa-tag.cjs.entry.js.map +1 -1
- package/dist/cjs/diwa-text-list-item.cjs.entry.js +1 -1
- package/dist/cjs/diwa-text-list.cjs.entry.js +1 -1
- package/dist/cjs/diwa-text.cjs.entry.js +1 -1
- package/dist/cjs/diwa-textarea.cjs.entry.js +1 -1
- package/dist/cjs/diwa-toast-item.cjs.entry.js +1 -1
- package/dist/cjs/diwa-toast.cjs.entry.js +111 -17
- package/dist/cjs/diwa-toast.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/diwa-checkbox/diwa-checkbox-styles.js +1 -3
- package/dist/collection/components/diwa-checkbox/diwa-checkbox-styles.js.map +1 -1
- package/dist/collection/components/diwa-heading/diwa-heading-styles.js +53 -0
- package/dist/collection/components/diwa-heading/diwa-heading-styles.js.map +1 -0
- package/dist/collection/components/diwa-heading/diwa-heading-utils.js +26 -0
- package/dist/collection/components/diwa-heading/diwa-heading-utils.js.map +1 -0
- package/dist/collection/components/diwa-heading/diwa-heading.js +235 -0
- package/dist/collection/components/diwa-heading/diwa-heading.js.map +1 -0
- package/dist/collection/components/diwa-heading/types.js +2 -0
- package/dist/collection/components/diwa-heading/types.js.map +1 -0
- package/dist/collection/components/diwa-icon/diwa-icon.js +1 -1
- package/dist/collection/components/diwa-inline-notification/diwa-inline-notification.js +1 -1
- package/dist/collection/components/diwa-input/diwa-input.js +1 -1
- package/dist/collection/components/diwa-input-date/diwa-input-date.js +1 -1
- package/dist/collection/components/diwa-input-email/diwa-input-email.js +1 -1
- package/dist/collection/components/diwa-input-month/diwa-input-month.js +1 -1
- package/dist/collection/components/diwa-input-number/diwa-input-number.js +1 -1
- package/dist/collection/components/diwa-input-password/diwa-input-password.js +1 -1
- package/dist/collection/components/diwa-input-search/diwa-input-search.js +1 -1
- package/dist/collection/components/diwa-input-tel/diwa-input-tel.js +1 -1
- package/dist/collection/components/diwa-input-text/diwa-input-text.js +1 -1
- package/dist/collection/components/diwa-input-time/diwa-input-time.js +1 -1
- package/dist/collection/components/diwa-input-url/diwa-input-url.js +1 -1
- package/dist/collection/components/diwa-input-week/diwa-input-week.js +1 -1
- package/dist/collection/components/diwa-link/diwa-link.js +1 -1
- package/dist/collection/components/diwa-link-pure/diwa-link-pure.js +1 -1
- package/dist/collection/components/diwa-modal/diwa-modal.js +1 -1
- package/dist/collection/components/diwa-multi-select/diwa-multi-select.js +2 -2
- package/dist/collection/components/diwa-multi-select-option/diwa-multi-select-option.js +1 -1
- package/dist/collection/components/diwa-pagination/diwa-pagination.js +1 -1
- package/dist/collection/components/diwa-pin-code/diwa-pin-code.js +2 -2
- package/dist/collection/components/diwa-popover/diwa-popover.js +1 -1
- package/dist/collection/components/diwa-radio-group/diwa-radio-group.js +1 -1
- package/dist/collection/components/diwa-radio-group-item/diwa-radio-group-item-styles.js +1 -2
- package/dist/collection/components/diwa-radio-group-item/diwa-radio-group-item-styles.js.map +1 -1
- package/dist/collection/components/diwa-radio-group-item/diwa-radio-group-item.js +1 -1
- package/dist/collection/components/diwa-scroller/diwa-scroller-styles.js +14 -9
- package/dist/collection/components/diwa-scroller/diwa-scroller-styles.js.map +1 -1
- package/dist/collection/components/diwa-scroller/diwa-scroller.js +9 -13
- package/dist/collection/components/diwa-scroller/diwa-scroller.js.map +1 -1
- package/dist/collection/components/diwa-segmented-control/diwa-segmented-control.js +1 -1
- package/dist/collection/components/diwa-segmented-control-item/diwa-segmented-control-item.js +1 -1
- package/dist/collection/components/diwa-select/diwa-select.js +17 -1
- package/dist/collection/components/diwa-select/diwa-select.js.map +1 -1
- package/dist/collection/components/diwa-select-option/diwa-select-option-styles.js +21 -9
- package/dist/collection/components/diwa-select-option/diwa-select-option-styles.js.map +1 -1
- package/dist/collection/components/diwa-select-option/diwa-select-option.js +23 -1
- package/dist/collection/components/diwa-select-option/diwa-select-option.js.map +1 -1
- package/dist/collection/components/diwa-spinner/diwa-spinner.js +1 -1
- package/dist/collection/components/diwa-stepper-horizontal/diwa-stepper-horizontal.js +1 -1
- package/dist/collection/components/diwa-stepper-horizontal-item/diwa-stepper-horizontal-item.js +1 -1
- package/dist/collection/components/diwa-switch/diwa-switch.js +1 -1
- package/dist/collection/components/diwa-table/diwa-table-styles.js +81 -42
- package/dist/collection/components/diwa-table/diwa-table-styles.js.map +1 -1
- package/dist/collection/components/diwa-table/diwa-table.js +3 -2
- package/dist/collection/components/diwa-table/diwa-table.js.map +1 -1
- package/dist/collection/components/diwa-table-body/diwa-table-body.js +1 -1
- package/dist/collection/components/diwa-table-cell/diwa-table-cell-styles.js +14 -14
- package/dist/collection/components/diwa-table-cell/diwa-table-cell-styles.js.map +1 -1
- package/dist/collection/components/diwa-table-cell/diwa-table-cell.js +1 -1
- package/dist/collection/components/diwa-table-cell/diwa-table-cell.js.map +1 -1
- package/dist/collection/components/diwa-table-head/diwa-table-head-styles.js +15 -10
- package/dist/collection/components/diwa-table-head/diwa-table-head-styles.js.map +1 -1
- package/dist/collection/components/diwa-table-head/diwa-table-head.js +1 -1
- package/dist/collection/components/diwa-table-head-cell/diwa-table-head-cell-styles.js +60 -49
- package/dist/collection/components/diwa-table-head-cell/diwa-table-head-cell-styles.js.map +1 -1
- package/dist/collection/components/diwa-table-head-cell/diwa-table-head-cell.js +4 -4
- package/dist/collection/components/diwa-table-head-cell/diwa-table-head-cell.js.map +1 -1
- package/dist/collection/components/diwa-table-row/diwa-table-row-styles.js +10 -9
- package/dist/collection/components/diwa-table-row/diwa-table-row-styles.js.map +1 -1
- package/dist/collection/components/diwa-table-row/diwa-table-row.js +1 -1
- package/dist/collection/components/diwa-tabs/diwa-tabs-styles.js +11 -11
- package/dist/collection/components/diwa-tabs/diwa-tabs-styles.js.map +1 -1
- package/dist/collection/components/diwa-tabs/diwa-tabs.js +1 -1
- package/dist/collection/components/diwa-tabs-bar/diwa-tabs-bar.js +1 -1
- package/dist/collection/components/diwa-tabs-item/diwa-tabs-item.js +1 -1
- package/dist/collection/components/diwa-tag/diwa-tag-styles.js +1 -1
- package/dist/collection/components/diwa-tag/diwa-tag-styles.js.map +1 -1
- package/dist/collection/components/diwa-tag/diwa-tag.js +1 -1
- package/dist/collection/components/diwa-tag-dismissible/diwa-tag-dismissible-styles.js +5 -6
- package/dist/collection/components/diwa-tag-dismissible/diwa-tag-dismissible-styles.js.map +1 -1
- package/dist/collection/components/diwa-tag-dismissible/diwa-tag-dismissible.js +1 -2
- package/dist/collection/components/diwa-tag-dismissible/diwa-tag-dismissible.js.map +1 -1
- package/dist/collection/components/diwa-text/diwa-text.js +1 -1
- package/dist/collection/components/diwa-text-list/diwa-text-list.js +1 -1
- package/dist/collection/components/diwa-text-list-item/diwa-text-list-item.js +1 -1
- package/dist/collection/components/diwa-textarea/diwa-textarea.js +1 -1
- package/dist/collection/components/diwa-toast/diwa-toast-manager.js +96 -0
- package/dist/collection/components/diwa-toast/diwa-toast-manager.js.map +1 -0
- package/dist/collection/components/diwa-toast/diwa-toast.js +24 -25
- package/dist/collection/components/diwa-toast/diwa-toast.js.map +1 -1
- package/dist/collection/components/diwa-toast-item/diwa-toast-item.js +1 -1
- package/dist/diwa-components/diwa-components.css +2 -2
- package/dist/diwa-components/diwa-components.esm.js +1 -1
- package/dist/diwa-components/diwa-components.esm.js.map +1 -1
- package/dist/diwa-components/{p-2b54c761.entry.js → p-09f2e643.entry.js} +2 -2
- package/dist/diwa-components/{p-4ac5a26e.entry.js → p-117dc41d.entry.js} +2 -2
- package/dist/diwa-components/p-117dc41d.entry.js.map +1 -0
- package/dist/diwa-components/{p-1022a474.entry.js → p-1250d0c7.entry.js} +2 -2
- package/dist/diwa-components/{p-1a1bd7ed.entry.js → p-13e71247.entry.js} +2 -2
- package/dist/diwa-components/p-1830772d.entry.js +2 -0
- package/dist/diwa-components/{p-f4a589b5.entry.js → p-1d708e1e.entry.js} +2 -2
- package/dist/diwa-components/{p-bb04cdd6.entry.js → p-238da82a.entry.js} +2 -2
- package/dist/diwa-components/p-29419c9a.entry.js +2 -0
- package/dist/diwa-components/p-29419c9a.entry.js.map +1 -0
- package/dist/diwa-components/{p-c896dfa5.entry.js → p-3269a4b7.entry.js} +2 -2
- package/dist/diwa-components/p-35b69160.entry.js +2 -0
- package/dist/diwa-components/p-35b69160.entry.js.map +1 -0
- package/dist/diwa-components/{p-fbe73240.entry.js → p-3660b09a.entry.js} +2 -2
- package/dist/diwa-components/{p-c37374ab.entry.js → p-36b004e9.entry.js} +2 -2
- package/dist/diwa-components/p-37e1bea3.entry.js +2 -0
- package/dist/diwa-components/p-37e1bea3.entry.js.map +1 -0
- package/dist/diwa-components/{p-851cbfb8.entry.js → p-3b38fa01.entry.js} +2 -2
- package/dist/diwa-components/p-3fb5cc30.entry.js +2 -0
- package/dist/diwa-components/p-429c596d.entry.js +2 -0
- package/dist/diwa-components/p-429c596d.entry.js.map +1 -0
- package/dist/diwa-components/p-50866c5a.entry.js +2 -0
- package/dist/diwa-components/p-50866c5a.entry.js.map +1 -0
- package/dist/diwa-components/p-5a597e27.entry.js +2 -0
- package/dist/diwa-components/p-5f9139bc.entry.js +2 -0
- package/dist/diwa-components/p-5f9139bc.entry.js.map +1 -0
- package/dist/diwa-components/p-66c15f66.entry.js +2 -0
- package/dist/diwa-components/p-66c53adc.entry.js +2 -0
- package/dist/diwa-components/p-66c53adc.entry.js.map +1 -0
- package/dist/diwa-components/{p-6253fff6.entry.js → p-71c45961.entry.js} +2 -2
- package/dist/diwa-components/{p-358e1177.entry.js → p-78b16866.entry.js} +2 -2
- package/dist/diwa-components/p-7a99a2aa.entry.js +2 -0
- package/dist/diwa-components/p-7a99a2aa.entry.js.map +1 -0
- package/dist/diwa-components/p-7dc7291f.entry.js +2 -0
- package/dist/diwa-components/{p-09a9e0a0.entry.js → p-8369c48e.entry.js} +2 -2
- package/dist/diwa-components/{p-c0614fb1.entry.js → p-8506ea0c.entry.js} +2 -2
- package/dist/diwa-components/p-863c88a4.entry.js +2 -0
- package/dist/diwa-components/{p-339f6ba7.entry.js.map → p-863c88a4.entry.js.map} +1 -1
- package/dist/diwa-components/{p-ba1ffa71.entry.js → p-87932af2.entry.js} +2 -2
- package/dist/diwa-components/{p-48009a79.entry.js → p-926e283b.entry.js} +2 -2
- package/dist/diwa-components/p-952af214.entry.js +2 -0
- package/dist/diwa-components/p-952af214.entry.js.map +1 -0
- package/dist/diwa-components/{p-4ff58224.entry.js → p-95b0fdea.entry.js} +2 -2
- package/dist/diwa-components/p-9910d570.entry.js +2 -0
- package/dist/diwa-components/p-9910d570.entry.js.map +1 -0
- package/dist/diwa-components/{p-20fd1505.entry.js → p-998dd88e.entry.js} +2 -2
- package/dist/diwa-components/p-9ade0403.entry.js +2 -0
- package/dist/diwa-components/{p-57db0c31.entry.js → p-9c89e586.entry.js} +2 -2
- package/dist/diwa-components/p-b072ff72.entry.js +2 -0
- package/dist/diwa-components/p-b072ff72.entry.js.map +1 -0
- package/dist/diwa-components/{p-565f623e.entry.js → p-bd501daa.entry.js} +2 -2
- package/dist/diwa-components/{p-c1c85f9e.entry.js → p-c6ca8d8b.entry.js} +2 -2
- package/dist/diwa-components/{p-53e21a74.entry.js → p-c78591ce.entry.js} +2 -2
- package/dist/diwa-components/{p-996f7110.entry.js → p-cc0e1662.entry.js} +2 -2
- package/dist/diwa-components/{p-711e295e.entry.js → p-d25377eb.entry.js} +2 -2
- package/dist/diwa-components/{p-7f0ce623.entry.js → p-d917625e.entry.js} +2 -2
- package/dist/diwa-components/{p-d0762292.entry.js → p-db70e030.entry.js} +2 -2
- package/dist/diwa-components/p-db70e030.entry.js.map +1 -0
- package/dist/diwa-components/p-def36bc4.entry.js +2 -0
- package/dist/diwa-components/p-def36bc4.entry.js.map +1 -0
- package/dist/diwa-components/p-e137afc9.entry.js +2 -0
- package/dist/diwa-components/{p-666844e0.entry.js → p-e1935375.entry.js} +2 -2
- package/dist/diwa-components/{p-87ea8001.entry.js → p-e602c199.entry.js} +2 -2
- package/dist/diwa-components/{p-9f140e14.entry.js → p-e9673253.entry.js} +2 -2
- package/dist/diwa-components/p-f44d4091.entry.js +2 -0
- package/dist/diwa-components/p-f44d4091.entry.js.map +1 -0
- package/dist/diwa-components/p-f60f1d81.entry.js +2 -0
- package/dist/diwa-components/p-fae653f7.entry.js +2 -0
- package/dist/esm/diwa-checkbox.entry.js +1 -3
- package/dist/esm/diwa-checkbox.entry.js.map +1 -1
- package/dist/esm/diwa-components.js +1 -1
- package/dist/esm/diwa-heading.entry.js +122 -0
- package/dist/esm/diwa-heading.entry.js.map +1 -0
- package/dist/esm/diwa-icon.entry.js +1 -1
- package/dist/esm/diwa-inline-notification.entry.js +1 -1
- package/dist/esm/diwa-input-date.entry.js +1 -1
- package/dist/esm/diwa-input-email.entry.js +1 -1
- package/dist/esm/diwa-input-month.entry.js +1 -1
- package/dist/esm/diwa-input-number.entry.js +1 -1
- package/dist/esm/diwa-input-password.entry.js +1 -1
- package/dist/esm/diwa-input-search.entry.js +1 -1
- package/dist/esm/diwa-input-tel.entry.js +1 -1
- package/dist/esm/diwa-input-text.entry.js +1 -1
- package/dist/esm/diwa-input-time.entry.js +1 -1
- package/dist/esm/diwa-input-url.entry.js +1 -1
- package/dist/esm/diwa-input-week.entry.js +1 -1
- package/dist/esm/diwa-input.entry.js +1 -1
- package/dist/esm/diwa-link-pure.entry.js +1 -1
- package/dist/esm/diwa-link.entry.js +1 -1
- package/dist/esm/diwa-modal.entry.js +1 -1
- package/dist/esm/diwa-multi-select-option.entry.js +1 -1
- package/dist/esm/diwa-multi-select.entry.js +2 -2
- package/dist/esm/diwa-pagination.entry.js +1 -1
- package/dist/esm/diwa-pin-code.entry.js +2 -2
- package/dist/esm/diwa-popover.entry.js +1 -1
- package/dist/esm/diwa-radio-group-item.entry.js +2 -3
- package/dist/esm/diwa-radio-group-item.entry.js.map +1 -1
- package/dist/esm/diwa-radio-group.entry.js +1 -1
- package/dist/esm/diwa-scroller.entry.js +23 -13
- package/dist/esm/diwa-scroller.entry.js.map +1 -1
- package/dist/esm/diwa-segmented-control-item.entry.js +1 -1
- package/dist/esm/diwa-segmented-control.entry.js +1 -1
- package/dist/esm/diwa-select-option.entry.js +24 -10
- package/dist/esm/diwa-select-option.entry.js.map +1 -1
- package/dist/esm/diwa-select.entry.js +15 -1
- package/dist/esm/diwa-select.entry.js.map +1 -1
- package/dist/esm/diwa-spinner.entry.js +1 -1
- package/dist/esm/diwa-stepper-horizontal-item.entry.js +1 -1
- package/dist/esm/diwa-stepper-horizontal.entry.js +1 -1
- package/dist/esm/diwa-switch.entry.js +1 -1
- package/dist/esm/diwa-table-body.entry.js +1 -1
- package/dist/esm/diwa-table-cell.entry.js +15 -15
- package/dist/esm/diwa-table-cell.entry.js.map +1 -1
- package/dist/esm/diwa-table-head-cell.entry.js +64 -53
- package/dist/esm/diwa-table-head-cell.entry.js.map +1 -1
- package/dist/esm/diwa-table-head.entry.js +16 -11
- package/dist/esm/diwa-table-head.entry.js.map +1 -1
- package/dist/esm/diwa-table-row.entry.js +11 -10
- package/dist/esm/diwa-table-row.entry.js.map +1 -1
- package/dist/esm/diwa-table.entry.js +83 -43
- package/dist/esm/diwa-table.entry.js.map +1 -1
- package/dist/esm/diwa-tabs-bar.entry.js +1 -1
- package/dist/esm/diwa-tabs-item.entry.js +1 -1
- package/dist/esm/diwa-tabs.entry.js +12 -12
- package/dist/esm/diwa-tabs.entry.js.map +1 -1
- package/dist/esm/diwa-tag-dismissible.entry.js +6 -8
- package/dist/esm/diwa-tag-dismissible.entry.js.map +1 -1
- package/dist/esm/diwa-tag.entry.js +2 -2
- package/dist/esm/diwa-tag.entry.js.map +1 -1
- package/dist/esm/diwa-text-list-item.entry.js +1 -1
- package/dist/esm/diwa-text-list.entry.js +1 -1
- package/dist/esm/diwa-text.entry.js +1 -1
- package/dist/esm/diwa-textarea.entry.js +1 -1
- package/dist/esm/diwa-toast-item.entry.js +1 -1
- package/dist/esm/diwa-toast.entry.js +111 -17
- package/dist/esm/diwa-toast.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/types/components/diwa-heading/diwa-heading-styles.d.ts +3 -0
- package/dist/types/components/diwa-heading/diwa-heading-utils.d.ts +10 -0
- package/dist/types/components/diwa-heading/diwa-heading.d.ts +49 -0
- package/dist/types/components/diwa-heading/types.d.ts +17 -0
- package/dist/types/components/diwa-scroller/diwa-scroller-styles.d.ts +1 -1
- package/dist/types/components/diwa-scroller/diwa-scroller.d.ts +2 -1
- package/dist/types/components/diwa-select/diwa-select.d.ts +2 -0
- package/dist/types/components/diwa-select-option/diwa-select-option.d.ts +2 -0
- package/dist/types/components/diwa-table/diwa-table.d.ts +1 -1
- package/dist/types/components/diwa-toast/diwa-toast-manager.d.ts +34 -0
- package/dist/types/components/diwa-toast/diwa-toast.d.ts +12 -12
- package/dist/types/components.d.ts +144 -25
- package/dist-custom-elements/diwa-accordion.js +1 -1
- package/dist-custom-elements/diwa-button-pure.js +1 -1
- package/dist-custom-elements/diwa-button.js +1 -1
- package/dist-custom-elements/diwa-checkbox.js +1 -3
- package/dist-custom-elements/diwa-checkbox.js.map +1 -1
- package/dist-custom-elements/diwa-flyout.js +2 -2
- package/dist-custom-elements/diwa-heading.d.ts +11 -0
- package/dist-custom-elements/diwa-heading.js +149 -0
- package/dist-custom-elements/diwa-heading.js.map +1 -0
- package/dist-custom-elements/diwa-icon.js +1 -1
- package/dist-custom-elements/diwa-inline-notification.js +3 -3
- package/dist-custom-elements/diwa-input-date.js +1 -1
- package/dist-custom-elements/diwa-input-email.js +1 -1
- package/dist-custom-elements/diwa-input-month.js +1 -1
- package/dist-custom-elements/diwa-input-number.js +1 -1
- package/dist-custom-elements/diwa-input-password.js +2 -2
- package/dist-custom-elements/diwa-input-search.js +2 -2
- package/dist-custom-elements/diwa-input-tel.js +1 -1
- package/dist-custom-elements/diwa-input-text.js +1 -1
- package/dist-custom-elements/diwa-input-time.js +1 -1
- package/dist-custom-elements/diwa-input-url.js +1 -1
- package/dist-custom-elements/diwa-input-week.js +1 -1
- package/dist-custom-elements/diwa-input.js +1 -1
- package/dist-custom-elements/diwa-link-pure.js +2 -2
- package/dist-custom-elements/diwa-link.js +2 -2
- package/dist-custom-elements/diwa-modal.js +1 -1
- package/dist-custom-elements/diwa-multi-select-option.js +1 -1
- package/dist-custom-elements/diwa-multi-select.js +2 -2
- package/dist-custom-elements/diwa-pagination.js +1 -1
- package/dist-custom-elements/diwa-pin-code.js +2 -2
- package/dist-custom-elements/diwa-popover.js +1 -1
- package/dist-custom-elements/diwa-radio-group-item.js +2 -3
- package/dist-custom-elements/diwa-radio-group-item.js.map +1 -1
- package/dist-custom-elements/diwa-radio-group.js +1 -1
- package/dist-custom-elements/diwa-scroller.js +24 -14
- package/dist-custom-elements/diwa-scroller.js.map +1 -1
- package/dist-custom-elements/diwa-segmented-control-item.js +1 -1
- package/dist-custom-elements/diwa-segmented-control.js +1 -1
- package/dist-custom-elements/diwa-select-option.js +25 -10
- package/dist-custom-elements/diwa-select-option.js.map +1 -1
- package/dist-custom-elements/diwa-select.js +16 -1
- package/dist-custom-elements/diwa-select.js.map +1 -1
- package/dist-custom-elements/diwa-spinner.js +1 -1
- package/dist-custom-elements/diwa-stepper-horizontal-item.js +1 -1
- package/dist-custom-elements/diwa-stepper-horizontal.js +1 -1
- package/dist-custom-elements/diwa-switch.js +2 -2
- package/dist-custom-elements/diwa-table-body.js +1 -1
- package/dist-custom-elements/diwa-table-cell.js +15 -15
- package/dist-custom-elements/diwa-table-cell.js.map +1 -1
- package/dist-custom-elements/diwa-table-head-cell.js +64 -53
- package/dist-custom-elements/diwa-table-head-cell.js.map +1 -1
- package/dist-custom-elements/diwa-table-head.js +16 -11
- package/dist-custom-elements/diwa-table-head.js.map +1 -1
- package/dist-custom-elements/diwa-table-row.js +11 -10
- package/dist-custom-elements/diwa-table-row.js.map +1 -1
- package/dist-custom-elements/diwa-table.js +83 -43
- package/dist-custom-elements/diwa-table.js.map +1 -1
- package/dist-custom-elements/diwa-tabs-bar.js +1 -1
- package/dist-custom-elements/diwa-tabs-item.js +1 -1
- package/dist-custom-elements/diwa-tabs.js +12 -12
- package/dist-custom-elements/diwa-tabs.js.map +1 -1
- package/dist-custom-elements/diwa-tag-dismissible.js +6 -8
- package/dist-custom-elements/diwa-tag-dismissible.js.map +1 -1
- package/dist-custom-elements/diwa-tag.js +3 -3
- package/dist-custom-elements/diwa-tag.js.map +1 -1
- package/dist-custom-elements/diwa-text-list-item.js +1 -1
- package/dist-custom-elements/diwa-text-list.js +1 -1
- package/dist-custom-elements/diwa-text.js +1 -1
- package/dist-custom-elements/diwa-textarea.js +1 -1
- package/dist-custom-elements/diwa-toast-item.js +1 -1
- package/dist-custom-elements/diwa-toast.js +113 -19
- package/dist-custom-elements/diwa-toast.js.map +1 -1
- package/dist-custom-elements/{p-54e5b3fb.js → p-105f3f97.js} +2 -2
- package/dist-custom-elements/{p-54e5b3fb.js.map → p-105f3f97.js.map} +1 -1
- package/dist-custom-elements/{p-f480bce8.js → p-7c951f7f.js} +2 -2
- package/dist-custom-elements/{p-f480bce8.js.map → p-7c951f7f.js.map} +1 -1
- package/dist-custom-elements/{p-302af10d.js → p-8972ae69.js} +2 -2
- package/dist-custom-elements/{p-302af10d.js.map → p-8972ae69.js.map} +1 -1
- package/dist-custom-elements/{p-ed901570.js → p-b7255dc4.js} +2 -2
- package/dist-custom-elements/{p-ed901570.js.map → p-b7255dc4.js.map} +1 -1
- package/package.json +11 -9
- package/dist/diwa-components/p-043e3e19.entry.js +0 -2
- package/dist/diwa-components/p-05988905.entry.js +0 -2
- package/dist/diwa-components/p-08c584fb.entry.js +0 -2
- package/dist/diwa-components/p-08c584fb.entry.js.map +0 -1
- package/dist/diwa-components/p-0cbe8ed4.entry.js +0 -2
- package/dist/diwa-components/p-0cbe8ed4.entry.js.map +0 -1
- package/dist/diwa-components/p-139f619d.entry.js +0 -2
- package/dist/diwa-components/p-139f619d.entry.js.map +0 -1
- package/dist/diwa-components/p-178d18c2.entry.js +0 -2
- package/dist/diwa-components/p-178d18c2.entry.js.map +0 -1
- package/dist/diwa-components/p-2b72a324.entry.js +0 -2
- package/dist/diwa-components/p-339f6ba7.entry.js +0 -2
- package/dist/diwa-components/p-3b7a1431.entry.js +0 -2
- package/dist/diwa-components/p-3b7a1431.entry.js.map +0 -1
- package/dist/diwa-components/p-4a84fee8.entry.js +0 -2
- package/dist/diwa-components/p-4ac5a26e.entry.js.map +0 -1
- package/dist/diwa-components/p-51673c06.entry.js +0 -2
- package/dist/diwa-components/p-51673c06.entry.js.map +0 -1
- package/dist/diwa-components/p-5c2325aa.entry.js +0 -2
- package/dist/diwa-components/p-5cd79382.entry.js +0 -2
- package/dist/diwa-components/p-67950f59.entry.js +0 -2
- package/dist/diwa-components/p-67950f59.entry.js.map +0 -1
- package/dist/diwa-components/p-8012c384.entry.js +0 -2
- package/dist/diwa-components/p-8012c384.entry.js.map +0 -1
- package/dist/diwa-components/p-9088f057.entry.js +0 -2
- package/dist/diwa-components/p-94f603c2.entry.js +0 -2
- package/dist/diwa-components/p-94f603c2.entry.js.map +0 -1
- package/dist/diwa-components/p-b7132ea7.entry.js +0 -2
- package/dist/diwa-components/p-b7132ea7.entry.js.map +0 -1
- package/dist/diwa-components/p-b988c5b3.entry.js +0 -2
- package/dist/diwa-components/p-b988c5b3.entry.js.map +0 -1
- package/dist/diwa-components/p-bc2eecd2.entry.js +0 -2
- package/dist/diwa-components/p-cf960cf6.entry.js +0 -2
- package/dist/diwa-components/p-d0762292.entry.js.map +0 -1
- package/dist/diwa-components/p-f22b6145.entry.js +0 -2
- package/dist/diwa-components/p-f22b6145.entry.js.map +0 -1
- /package/dist/diwa-components/{p-2b54c761.entry.js.map → p-09f2e643.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-1022a474.entry.js.map → p-1250d0c7.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-1a1bd7ed.entry.js.map → p-13e71247.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-711e295e.entry.js.map → p-1830772d.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-f4a589b5.entry.js.map → p-1d708e1e.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-bb04cdd6.entry.js.map → p-238da82a.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-c896dfa5.entry.js.map → p-3269a4b7.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-fbe73240.entry.js.map → p-3660b09a.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-c37374ab.entry.js.map → p-36b004e9.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-851cbfb8.entry.js.map → p-3b38fa01.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-4a84fee8.entry.js.map → p-3fb5cc30.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-5cd79382.entry.js.map → p-5a597e27.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-043e3e19.entry.js.map → p-66c15f66.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-6253fff6.entry.js.map → p-71c45961.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-358e1177.entry.js.map → p-78b16866.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-05988905.entry.js.map → p-7dc7291f.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-09a9e0a0.entry.js.map → p-8369c48e.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-bc2eecd2.entry.js.map → p-8506ea0c.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-ba1ffa71.entry.js.map → p-87932af2.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-48009a79.entry.js.map → p-926e283b.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-4ff58224.entry.js.map → p-95b0fdea.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-20fd1505.entry.js.map → p-998dd88e.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-5c2325aa.entry.js.map → p-9ade0403.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-57db0c31.entry.js.map → p-9c89e586.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-565f623e.entry.js.map → p-bd501daa.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-c1c85f9e.entry.js.map → p-c6ca8d8b.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-53e21a74.entry.js.map → p-c78591ce.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-996f7110.entry.js.map → p-cc0e1662.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-9088f057.entry.js.map → p-d25377eb.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-7f0ce623.entry.js.map → p-d917625e.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-2b72a324.entry.js.map → p-e137afc9.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-666844e0.entry.js.map → p-e1935375.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-87ea8001.entry.js.map → p-e602c199.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-9f140e14.entry.js.map → p-e9673253.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-cf960cf6.entry.js.map → p-f60f1d81.entry.js.map} +0 -0
- /package/dist/diwa-components/{p-c0614fb1.entry.js.map → p-fae653f7.entry.js.map} +0 -0
|
@@ -13,6 +13,7 @@ import { ButtonPureAlignLabel, ButtonPureSize, ButtonPureType } from "./componen
|
|
|
13
13
|
import { CheckboxState } from "./components/diwa-checkbox/types";
|
|
14
14
|
import { DividerOrientation } from "./components/diwa-divider/types";
|
|
15
15
|
import { FlyoutBackdrop, FlyoutPosition } from "./components/diwa-flyout/types";
|
|
16
|
+
import { HeadingAlign, HeadingColor, HeadingSize, HeadingTag, HeadingWeight } from "./components/diwa-heading/types";
|
|
16
17
|
import { InlineNotificationState } from "./components/diwa-inline-notification/types";
|
|
17
18
|
import { InputFieldState, InputState, InputType } from "./components/diwa-input/types";
|
|
18
19
|
import { LinkTarget, LinkVariant } from "./components/diwa-link/types";
|
|
@@ -48,6 +49,7 @@ export { ButtonPureAlignLabel, ButtonPureSize, ButtonPureType } from "./componen
|
|
|
48
49
|
export { CheckboxState } from "./components/diwa-checkbox/types";
|
|
49
50
|
export { DividerOrientation } from "./components/diwa-divider/types";
|
|
50
51
|
export { FlyoutBackdrop, FlyoutPosition } from "./components/diwa-flyout/types";
|
|
52
|
+
export { HeadingAlign, HeadingColor, HeadingSize, HeadingTag, HeadingWeight } from "./components/diwa-heading/types";
|
|
51
53
|
export { InlineNotificationState } from "./components/diwa-inline-notification/types";
|
|
52
54
|
export { InputFieldState, InputState, InputType } from "./components/diwa-input/types";
|
|
53
55
|
export { LinkTarget, LinkVariant } from "./components/diwa-link/types";
|
|
@@ -442,6 +444,46 @@ export namespace Components {
|
|
|
442
444
|
*/
|
|
443
445
|
"theme": Theme;
|
|
444
446
|
}
|
|
447
|
+
/**
|
|
448
|
+
* @component diwa-heading
|
|
449
|
+
* A responsive heading renderer that maps a visual size scale onto the
|
|
450
|
+
* correct semantic HTML heading element. Font sizes use fluid type tokens
|
|
451
|
+
* that scale between viewport sizes.
|
|
452
|
+
* Usage:
|
|
453
|
+
* <diwa-heading size="h1">Page title</diwa-heading>
|
|
454
|
+
* <diwa-heading size="display" color="secondary">Hero headline</diwa-heading>
|
|
455
|
+
* <diwa-heading size="h3" tag="h2">Visual h3, semantic h2</diwa-heading>
|
|
456
|
+
*/
|
|
457
|
+
interface DiwaHeading {
|
|
458
|
+
/**
|
|
459
|
+
* Horizontal alignment. `start` and `end` are RTL-aware.
|
|
460
|
+
*/
|
|
461
|
+
"align": HeadingAlign;
|
|
462
|
+
/**
|
|
463
|
+
* Colour alias. Use `inherit` to pass through the surrounding colour unchanged — useful inside cards, hero sections, or other styled containers.
|
|
464
|
+
*/
|
|
465
|
+
"color": HeadingColor;
|
|
466
|
+
/**
|
|
467
|
+
* Clip overflow to a single line with a trailing ellipsis. The host element must have a defined width for this to take effect.
|
|
468
|
+
*/
|
|
469
|
+
"ellipsis": boolean;
|
|
470
|
+
/**
|
|
471
|
+
* Visual size and inferred semantic heading level. Determines the rendered HTML tag when no explicit `tag` prop is given.
|
|
472
|
+
*/
|
|
473
|
+
"size": HeadingSize;
|
|
474
|
+
/**
|
|
475
|
+
* Override the rendered HTML tag. Use when the visual size must differ from the semantic level — e.g. a visually-large `h3` inside a section that already has an `h2`. If omitted, the tag is inferred from `size`.
|
|
476
|
+
*/
|
|
477
|
+
"tag"?: HeadingTag;
|
|
478
|
+
/**
|
|
479
|
+
* Per-component theme override.
|
|
480
|
+
*/
|
|
481
|
+
"theme": Theme;
|
|
482
|
+
/**
|
|
483
|
+
* Font weight.
|
|
484
|
+
*/
|
|
485
|
+
"weight": HeadingWeight;
|
|
486
|
+
}
|
|
445
487
|
/**
|
|
446
488
|
* @component diwa-icon
|
|
447
489
|
* Renders a Lucide icon as an inline SVG inside Shadow DOM.
|
|
@@ -1458,6 +1500,10 @@ export namespace Components {
|
|
|
1458
1500
|
* <diwa-select-option>Please select…</diwa-select-option>
|
|
1459
1501
|
*/
|
|
1460
1502
|
interface DiwaSelectOption {
|
|
1503
|
+
/**
|
|
1504
|
+
* Compact mode — inherited from the parent diwa-select.
|
|
1505
|
+
*/
|
|
1506
|
+
"compact": boolean;
|
|
1461
1507
|
/**
|
|
1462
1508
|
* Disables the option — it cannot be selected.
|
|
1463
1509
|
*/
|
|
@@ -1600,7 +1646,7 @@ export namespace Components {
|
|
|
1600
1646
|
}
|
|
1601
1647
|
/**
|
|
1602
1648
|
* @component diwa-table
|
|
1603
|
-
* Wrapper for a data table. Uses
|
|
1649
|
+
* Wrapper for a data table. Uses CSS table layout with ARIA roles.
|
|
1604
1650
|
* Structure: diwa-table > diwa-table-head > diwa-table-row > diwa-table-head-cell
|
|
1605
1651
|
* > diwa-table-body > diwa-table-row > diwa-table-cell
|
|
1606
1652
|
*/
|
|
@@ -1897,18 +1943,18 @@ export namespace Components {
|
|
|
1897
1943
|
}
|
|
1898
1944
|
/**
|
|
1899
1945
|
* @component diwa-toast
|
|
1900
|
-
* Singleton container that queues and displays toast notifications
|
|
1901
|
-
* Call `addMessage()` to
|
|
1902
|
-
*
|
|
1946
|
+
* Singleton container that queues and displays toast notifications one at a
|
|
1947
|
+
* time. Call `addMessage()` to enqueue a toast — only one toast is visible at
|
|
1948
|
+
* a given moment; additional messages are shown in FIFO order as each one is
|
|
1949
|
+
* dismissed or times out.
|
|
1950
|
+
* Only one `<diwa-toast>` element should exist per page.
|
|
1903
1951
|
* Usage:
|
|
1904
1952
|
* const toast = document.querySelector('diwa-toast');
|
|
1905
1953
|
* toast.addMessage({ text: 'Saved!', state: 'success' });
|
|
1906
|
-
* Or via the static helper:
|
|
1907
|
-
* DiwaToast.addMessage({ text: 'Error!', state: 'error' });
|
|
1908
1954
|
*/
|
|
1909
1955
|
interface DiwaToast {
|
|
1910
1956
|
/**
|
|
1911
|
-
*
|
|
1957
|
+
* Enqueues a toast message. If no toast is currently visible it is shown immediately; otherwise it is placed in the FIFO queue and shown after all preceding messages have been dismissed.
|
|
1912
1958
|
*/
|
|
1913
1959
|
"addMessage": (message: ToastMessage) => Promise<void>;
|
|
1914
1960
|
"theme": Theme;
|
|
@@ -2273,6 +2319,22 @@ declare global {
|
|
|
2273
2319
|
prototype: HTMLDiwaFlyoutElement;
|
|
2274
2320
|
new (): HTMLDiwaFlyoutElement;
|
|
2275
2321
|
};
|
|
2322
|
+
/**
|
|
2323
|
+
* @component diwa-heading
|
|
2324
|
+
* A responsive heading renderer that maps a visual size scale onto the
|
|
2325
|
+
* correct semantic HTML heading element. Font sizes use fluid type tokens
|
|
2326
|
+
* that scale between viewport sizes.
|
|
2327
|
+
* Usage:
|
|
2328
|
+
* <diwa-heading size="h1">Page title</diwa-heading>
|
|
2329
|
+
* <diwa-heading size="display" color="secondary">Hero headline</diwa-heading>
|
|
2330
|
+
* <diwa-heading size="h3" tag="h2">Visual h3, semantic h2</diwa-heading>
|
|
2331
|
+
*/
|
|
2332
|
+
interface HTMLDiwaHeadingElement extends Components.DiwaHeading, HTMLStencilElement {
|
|
2333
|
+
}
|
|
2334
|
+
var HTMLDiwaHeadingElement: {
|
|
2335
|
+
prototype: HTMLDiwaHeadingElement;
|
|
2336
|
+
new (): HTMLDiwaHeadingElement;
|
|
2337
|
+
};
|
|
2276
2338
|
/**
|
|
2277
2339
|
* @component diwa-icon
|
|
2278
2340
|
* Renders a Lucide icon as an inline SVG inside Shadow DOM.
|
|
@@ -3022,7 +3084,7 @@ declare global {
|
|
|
3022
3084
|
}
|
|
3023
3085
|
/**
|
|
3024
3086
|
* @component diwa-table
|
|
3025
|
-
* Wrapper for a data table. Uses
|
|
3087
|
+
* Wrapper for a data table. Uses CSS table layout with ARIA roles.
|
|
3026
3088
|
* Structure: diwa-table > diwa-table-head > diwa-table-row > diwa-table-head-cell
|
|
3027
3089
|
* > diwa-table-body > diwa-table-row > diwa-table-cell
|
|
3028
3090
|
*/
|
|
@@ -3250,14 +3312,14 @@ declare global {
|
|
|
3250
3312
|
};
|
|
3251
3313
|
/**
|
|
3252
3314
|
* @component diwa-toast
|
|
3253
|
-
* Singleton container that queues and displays toast notifications
|
|
3254
|
-
* Call `addMessage()` to
|
|
3255
|
-
*
|
|
3315
|
+
* Singleton container that queues and displays toast notifications one at a
|
|
3316
|
+
* time. Call `addMessage()` to enqueue a toast — only one toast is visible at
|
|
3317
|
+
* a given moment; additional messages are shown in FIFO order as each one is
|
|
3318
|
+
* dismissed or times out.
|
|
3319
|
+
* Only one `<diwa-toast>` element should exist per page.
|
|
3256
3320
|
* Usage:
|
|
3257
3321
|
* const toast = document.querySelector('diwa-toast');
|
|
3258
3322
|
* toast.addMessage({ text: 'Saved!', state: 'success' });
|
|
3259
|
-
* Or via the static helper:
|
|
3260
|
-
* DiwaToast.addMessage({ text: 'Error!', state: 'error' });
|
|
3261
3323
|
*/
|
|
3262
3324
|
interface HTMLDiwaToastElement extends Components.DiwaToast, HTMLStencilElement {
|
|
3263
3325
|
}
|
|
@@ -3295,6 +3357,7 @@ declare global {
|
|
|
3295
3357
|
"diwa-checkbox": HTMLDiwaCheckboxElement;
|
|
3296
3358
|
"diwa-divider": HTMLDiwaDividerElement;
|
|
3297
3359
|
"diwa-flyout": HTMLDiwaFlyoutElement;
|
|
3360
|
+
"diwa-heading": HTMLDiwaHeadingElement;
|
|
3298
3361
|
"diwa-icon": HTMLDiwaIconElement;
|
|
3299
3362
|
"diwa-inline-notification": HTMLDiwaInlineNotificationElement;
|
|
3300
3363
|
"diwa-input": HTMLDiwaInputElement;
|
|
@@ -3726,6 +3789,46 @@ declare namespace LocalJSX {
|
|
|
3726
3789
|
*/
|
|
3727
3790
|
"theme"?: Theme;
|
|
3728
3791
|
}
|
|
3792
|
+
/**
|
|
3793
|
+
* @component diwa-heading
|
|
3794
|
+
* A responsive heading renderer that maps a visual size scale onto the
|
|
3795
|
+
* correct semantic HTML heading element. Font sizes use fluid type tokens
|
|
3796
|
+
* that scale between viewport sizes.
|
|
3797
|
+
* Usage:
|
|
3798
|
+
* <diwa-heading size="h1">Page title</diwa-heading>
|
|
3799
|
+
* <diwa-heading size="display" color="secondary">Hero headline</diwa-heading>
|
|
3800
|
+
* <diwa-heading size="h3" tag="h2">Visual h3, semantic h2</diwa-heading>
|
|
3801
|
+
*/
|
|
3802
|
+
interface DiwaHeading {
|
|
3803
|
+
/**
|
|
3804
|
+
* Horizontal alignment. `start` and `end` are RTL-aware.
|
|
3805
|
+
*/
|
|
3806
|
+
"align"?: HeadingAlign;
|
|
3807
|
+
/**
|
|
3808
|
+
* Colour alias. Use `inherit` to pass through the surrounding colour unchanged — useful inside cards, hero sections, or other styled containers.
|
|
3809
|
+
*/
|
|
3810
|
+
"color"?: HeadingColor;
|
|
3811
|
+
/**
|
|
3812
|
+
* Clip overflow to a single line with a trailing ellipsis. The host element must have a defined width for this to take effect.
|
|
3813
|
+
*/
|
|
3814
|
+
"ellipsis"?: boolean;
|
|
3815
|
+
/**
|
|
3816
|
+
* Visual size and inferred semantic heading level. Determines the rendered HTML tag when no explicit `tag` prop is given.
|
|
3817
|
+
*/
|
|
3818
|
+
"size"?: HeadingSize;
|
|
3819
|
+
/**
|
|
3820
|
+
* Override the rendered HTML tag. Use when the visual size must differ from the semantic level — e.g. a visually-large `h3` inside a section that already has an `h2`. If omitted, the tag is inferred from `size`.
|
|
3821
|
+
*/
|
|
3822
|
+
"tag"?: HeadingTag;
|
|
3823
|
+
/**
|
|
3824
|
+
* Per-component theme override.
|
|
3825
|
+
*/
|
|
3826
|
+
"theme"?: Theme;
|
|
3827
|
+
/**
|
|
3828
|
+
* Font weight.
|
|
3829
|
+
*/
|
|
3830
|
+
"weight"?: HeadingWeight;
|
|
3831
|
+
}
|
|
3729
3832
|
/**
|
|
3730
3833
|
* @component diwa-icon
|
|
3731
3834
|
* Renders a Lucide icon as an inline SVG inside Shadow DOM.
|
|
@@ -4847,6 +4950,10 @@ declare namespace LocalJSX {
|
|
|
4847
4950
|
* <diwa-select-option>Please select…</diwa-select-option>
|
|
4848
4951
|
*/
|
|
4849
4952
|
interface DiwaSelectOption {
|
|
4953
|
+
/**
|
|
4954
|
+
* Compact mode — inherited from the parent diwa-select.
|
|
4955
|
+
*/
|
|
4956
|
+
"compact"?: boolean;
|
|
4850
4957
|
/**
|
|
4851
4958
|
* Disables the option — it cannot be selected.
|
|
4852
4959
|
*/
|
|
@@ -4998,7 +5105,7 @@ declare namespace LocalJSX {
|
|
|
4998
5105
|
}
|
|
4999
5106
|
/**
|
|
5000
5107
|
* @component diwa-table
|
|
5001
|
-
* Wrapper for a data table. Uses
|
|
5108
|
+
* Wrapper for a data table. Uses CSS table layout with ARIA roles.
|
|
5002
5109
|
* Structure: diwa-table > diwa-table-head > diwa-table-row > diwa-table-head-cell
|
|
5003
5110
|
* > diwa-table-body > diwa-table-row > diwa-table-cell
|
|
5004
5111
|
*/
|
|
@@ -5320,14 +5427,14 @@ declare namespace LocalJSX {
|
|
|
5320
5427
|
}
|
|
5321
5428
|
/**
|
|
5322
5429
|
* @component diwa-toast
|
|
5323
|
-
* Singleton container that queues and displays toast notifications
|
|
5324
|
-
* Call `addMessage()` to
|
|
5325
|
-
*
|
|
5430
|
+
* Singleton container that queues and displays toast notifications one at a
|
|
5431
|
+
* time. Call `addMessage()` to enqueue a toast — only one toast is visible at
|
|
5432
|
+
* a given moment; additional messages are shown in FIFO order as each one is
|
|
5433
|
+
* dismissed or times out.
|
|
5434
|
+
* Only one `<diwa-toast>` element should exist per page.
|
|
5326
5435
|
* Usage:
|
|
5327
5436
|
* const toast = document.querySelector('diwa-toast');
|
|
5328
5437
|
* toast.addMessage({ text: 'Saved!', state: 'success' });
|
|
5329
|
-
* Or via the static helper:
|
|
5330
|
-
* DiwaToast.addMessage({ text: 'Error!', state: 'error' });
|
|
5331
5438
|
*/
|
|
5332
5439
|
interface DiwaToast {
|
|
5333
5440
|
"theme"?: Theme;
|
|
@@ -5363,6 +5470,7 @@ declare namespace LocalJSX {
|
|
|
5363
5470
|
"diwa-checkbox": DiwaCheckbox;
|
|
5364
5471
|
"diwa-divider": DiwaDivider;
|
|
5365
5472
|
"diwa-flyout": DiwaFlyout;
|
|
5473
|
+
"diwa-heading": DiwaHeading;
|
|
5366
5474
|
"diwa-icon": DiwaIcon;
|
|
5367
5475
|
"diwa-inline-notification": DiwaInlineNotification;
|
|
5368
5476
|
"diwa-input": DiwaInput;
|
|
@@ -5550,6 +5658,17 @@ declare module "@stencil/core" {
|
|
|
5550
5658
|
* </diwa-flyout>
|
|
5551
5659
|
*/
|
|
5552
5660
|
"diwa-flyout": LocalJSX.DiwaFlyout & JSXBase.HTMLAttributes<HTMLDiwaFlyoutElement>;
|
|
5661
|
+
/**
|
|
5662
|
+
* @component diwa-heading
|
|
5663
|
+
* A responsive heading renderer that maps a visual size scale onto the
|
|
5664
|
+
* correct semantic HTML heading element. Font sizes use fluid type tokens
|
|
5665
|
+
* that scale between viewport sizes.
|
|
5666
|
+
* Usage:
|
|
5667
|
+
* <diwa-heading size="h1">Page title</diwa-heading>
|
|
5668
|
+
* <diwa-heading size="display" color="secondary">Hero headline</diwa-heading>
|
|
5669
|
+
* <diwa-heading size="h3" tag="h2">Visual h3, semantic h2</diwa-heading>
|
|
5670
|
+
*/
|
|
5671
|
+
"diwa-heading": LocalJSX.DiwaHeading & JSXBase.HTMLAttributes<HTMLDiwaHeadingElement>;
|
|
5553
5672
|
/**
|
|
5554
5673
|
* @component diwa-icon
|
|
5555
5674
|
* Renders a Lucide icon as an inline SVG inside Shadow DOM.
|
|
@@ -5804,7 +5923,7 @@ declare module "@stencil/core" {
|
|
|
5804
5923
|
"diwa-switch": LocalJSX.DiwaSwitch & JSXBase.HTMLAttributes<HTMLDiwaSwitchElement>;
|
|
5805
5924
|
/**
|
|
5806
5925
|
* @component diwa-table
|
|
5807
|
-
* Wrapper for a data table. Uses
|
|
5926
|
+
* Wrapper for a data table. Uses CSS table layout with ARIA roles.
|
|
5808
5927
|
* Structure: diwa-table > diwa-table-head > diwa-table-row > diwa-table-head-cell
|
|
5809
5928
|
* > diwa-table-body > diwa-table-row > diwa-table-cell
|
|
5810
5929
|
*/
|
|
@@ -5903,14 +6022,14 @@ declare module "@stencil/core" {
|
|
|
5903
6022
|
"diwa-textarea": LocalJSX.DiwaTextarea & JSXBase.HTMLAttributes<HTMLDiwaTextareaElement>;
|
|
5904
6023
|
/**
|
|
5905
6024
|
* @component diwa-toast
|
|
5906
|
-
* Singleton container that queues and displays toast notifications
|
|
5907
|
-
* Call `addMessage()` to
|
|
5908
|
-
*
|
|
6025
|
+
* Singleton container that queues and displays toast notifications one at a
|
|
6026
|
+
* time. Call `addMessage()` to enqueue a toast — only one toast is visible at
|
|
6027
|
+
* a given moment; additional messages are shown in FIFO order as each one is
|
|
6028
|
+
* dismissed or times out.
|
|
6029
|
+
* Only one `<diwa-toast>` element should exist per page.
|
|
5909
6030
|
* Usage:
|
|
5910
6031
|
* const toast = document.querySelector('diwa-toast');
|
|
5911
6032
|
* toast.addMessage({ text: 'Saved!', state: 'success' });
|
|
5912
|
-
* Or via the static helper:
|
|
5913
|
-
* DiwaToast.addMessage({ text: 'Error!', state: 'error' });
|
|
5914
6033
|
*/
|
|
5915
6034
|
"diwa-toast": LocalJSX.DiwaToast & JSXBase.HTMLAttributes<HTMLDiwaToastElement>;
|
|
5916
6035
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-5eacc7d0.js';
|
|
2
2
|
import { g as getFocusStyle, a as getReducedMotionStyle } from './p-70bbb21a.js';
|
|
3
|
-
import { d as defineCustomElement$2 } from './p-
|
|
3
|
+
import { d as defineCustomElement$2 } from './p-8972ae69.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* diwa-accordion-styles.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { p as proxyCustomElement, H, h, d as Host } from './p-5eacc7d0.js';
|
|
2
2
|
import { g as getFocusStyle, a as getReducedMotionStyle } from './p-70bbb21a.js';
|
|
3
|
-
import { d as defineCustomElement$2 } from './p-
|
|
3
|
+
import { d as defineCustomElement$2 } from './p-8972ae69.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* diwa-button-styles.ts
|
|
@@ -37,7 +37,7 @@ const getComponentCss = (state, _disabled, compact, _hideLabel) => {
|
|
|
37
37
|
|
|
38
38
|
.wrapper {
|
|
39
39
|
display: inline-flex;
|
|
40
|
-
align-items:
|
|
40
|
+
align-items: center;
|
|
41
41
|
gap: var(--diwa-space-3);
|
|
42
42
|
cursor: pointer;
|
|
43
43
|
}
|
|
@@ -53,8 +53,6 @@ const getComponentCss = (state, _disabled, compact, _hideLabel) => {
|
|
|
53
53
|
flex-shrink: 0;
|
|
54
54
|
width: ${boxSize};
|
|
55
55
|
height: ${boxSize};
|
|
56
|
-
/* Center the box on the first line of label text (line-height: 1.5) */
|
|
57
|
-
margin-top: calc((1.5em - ${boxSize}) / 2);
|
|
58
56
|
}
|
|
59
57
|
|
|
60
58
|
/* ── Native checkbox ──────────────────────────────────────────────── */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"diwa-checkbox.js","mappings":"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","names":["DiwaCheckbox"],"sources":["src/components/diwa-checkbox/diwa-checkbox-styles.ts","src/components/diwa-checkbox/diwa-checkbox.tsx"],"sourcesContent":["import type { CheckboxState } from './types';\r\nimport { getFocusStyle, getReducedMotionStyle } from '../../utils/styles';\r\nimport { checkmarkSvg, getCheckboxBoxCss } from '../../utils/checkbox-mark';\r\n\r\n/** White horizontal dash for indeterminate state on a 12×12 viewBox */\r\nconst indeterminateSvg = `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Crect x='2.5' y='5.25' width='7' height='1.5' rx='0.75' fill='white'/%3E%3C/svg%3E\")`;\r\n\r\nexport const getComponentCss = (\r\n state: CheckboxState,\r\n _disabled: boolean,\r\n compact: boolean,\r\n _hideLabel: boolean,\r\n): string => {\r\n const boxSize = compact ? '14px' : '20px';\r\n const messageColor =\r\n state === 'error'\r\n ? 'var(--diwa-notification-error)'\r\n : state === 'success'\r\n ? 'var(--diwa-notification-success)'\r\n : 'var(--diwa-text-secondary)';\r\n\r\n return `\r\n\r\n /* ── Host ─────────────────────────────────────────────────────────── */\r\n\r\n :host {\r\n display: inline-block;\r\n font-family: var(--diwa-font-family-base);\r\n outline: none;\r\n }\r\n\r\n :host([hidden]) {\r\n display: none;\r\n }\r\n\r\n /* ── Root layout ──────────────────────────────────────────────────── */\r\n\r\n .root {\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--diwa-space-1);\r\n }\r\n\r\n /* ── Wrapper: checkbox + label side by side ───────────────────────── */\r\n\r\n .wrapper {\r\n display: inline-flex;\r\n align-items: flex-start;\r\n gap: var(--diwa-space-3);\r\n cursor: pointer;\r\n }\r\n\r\n :host([disabled]) .wrapper {\r\n cursor: not-allowed;\r\n }\r\n\r\n /* ── Input container ──────────────────────────────────────────────── */\r\n\r\n .input-container {\r\n position: relative;\r\n flex-shrink: 0;\r\n width: ${boxSize};\r\n height: ${boxSize};\r\n /* Center the box on the first line of label text (line-height: 1.5) */\r\n margin-top: calc((1.5em - ${boxSize}) / 2);\r\n }\r\n\r\n /* ── Native checkbox ──────────────────────────────────────────────── */\r\n\r\n input[type=\"checkbox\"] {\r\n appearance: none;\r\n -webkit-appearance: none;\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n margin: 0;\r\n padding: 0;\r\n box-sizing: border-box;\r\n cursor: pointer;\r\n\r\n ${getCheckboxBoxCss()}\r\n }\r\n\r\n input[type=\"checkbox\"]:disabled {\r\n cursor: not-allowed;\r\n }\r\n\r\n /* ── Focus ring ───────────────────────────────────────────────────── */\r\n\r\n ${getFocusStyle('input[type=\"checkbox\"]')}\r\n\r\n /* ── Hover ────────────────────────────────────────────────────────── */\r\n\r\n input[type=\"checkbox\"]:hover:not(:disabled) {\r\n border-color: var(--diwa-accent);\r\n background-color: var(--diwa-bg-hover);\r\n }\r\n\r\n /* ── Checked state ────────────────────────────────────────────────── */\r\n\r\n input[type=\"checkbox\"]:checked {\r\n background-color: var(--diwa-accent);\r\n border-color: var(--diwa-accent);\r\n background-image: ${checkmarkSvg};\r\n }\r\n\r\n input[type=\"checkbox\"]:checked:hover:not(:disabled) {\r\n background-color: var(--diwa-accent-hover);\r\n border-color: var(--diwa-accent-hover);\r\n }\r\n\r\n /* ── Indeterminate state ──────────────────────────────────────────── */\r\n\r\n input[type=\"checkbox\"]:indeterminate {\r\n background-color: var(--diwa-accent);\r\n border-color: var(--diwa-accent);\r\n background-image: ${indeterminateSvg};\r\n }\r\n\r\n input[type=\"checkbox\"]:indeterminate:hover:not(:disabled) {\r\n background-color: var(--diwa-accent-hover);\r\n border-color: var(--diwa-accent-hover);\r\n }\r\n\r\n /* ── Validation states ────────────────────────────────────────────── */\r\n\r\n :host([state=\"error\"]) input[type=\"checkbox\"]:not(:checked):not(:indeterminate) {\r\n border-color: var(--diwa-notification-error);\r\n }\r\n\r\n :host([state=\"error\"]) input[type=\"checkbox\"]:not(:checked):not(:indeterminate):hover:not(:disabled) {\r\n border-color: var(--diwa-notification-error);\r\n background-color: var(--diwa-bg-hover);\r\n }\r\n\r\n :host([state=\"success\"]) input[type=\"checkbox\"]:not(:checked):not(:indeterminate) {\r\n border-color: var(--diwa-notification-success);\r\n }\r\n\r\n :host([state=\"success\"]) input[type=\"checkbox\"]:not(:checked):not(:indeterminate):hover:not(:disabled) {\r\n border-color: var(--diwa-notification-success);\r\n background-color: var(--diwa-bg-hover);\r\n }\r\n\r\n /* ── Disabled ─────────────────────────────────────────────────────── */\r\n\r\n :host([disabled]) {\r\n opacity: var(--diwa-opacity-disabled);\r\n pointer-events: none;\r\n }\r\n\r\n /* ── Label ────────────────────────────────────────────────────────── */\r\n\r\n .label {\r\n font-size: var(--diwa-font-size-base);\r\n font-weight: var(--diwa-font-weight-regular);\r\n line-height: 1.5;\r\n color: var(--diwa-text-primary);\r\n cursor: pointer;\r\n }\r\n\r\n :host([disabled]) .label {\r\n cursor: not-allowed;\r\n }\r\n\r\n /* Visually-hidden label (still read by screen readers) */\r\n .label--hidden {\r\n border: 0;\r\n clip: rect(0, 0, 0, 0);\r\n height: 1px;\r\n margin: -1px;\r\n overflow: hidden;\r\n padding: 0;\r\n position: absolute;\r\n white-space: nowrap;\r\n width: 1px;\r\n }\r\n\r\n /* Required asterisk */\r\n .required {\r\n color: var(--diwa-notification-error);\r\n margin-left: var(--diwa-space-0-5);\r\n }\r\n\r\n /* ── Message ──────────────────────────────────────────────────────── */\r\n\r\n .message {\r\n display: block;\r\n font-size: var(--diwa-font-size-sm);\r\n line-height: 1.4;\r\n color: ${messageColor};\r\n /* Indent to align under the label, not the checkbox */\r\n padding-left: calc(${boxSize} + var(--diwa-space-3));\r\n }\r\n\r\n /* ── Reduced motion ───────────────────────────────────────────────── */\r\n\r\n ${getReducedMotionStyle('input[type=\"checkbox\"]')}\r\n`;\r\n};\r\n","import { Component, Element, Event, type EventEmitter, Host, Prop, Watch, h } from '@stencil/core';\r\nimport type { CheckboxState } from './types';\r\nimport type { Theme } from '../../utils/styles';\r\nimport { getComponentCss } from './diwa-checkbox-styles';\r\n\r\n/**\r\n * @component diwa-checkbox\r\n *\r\n * A fully accessible checkbox control with label, validation state,\r\n * and indeterminate support. Mirrors the PDS p-checkbox API.\r\n *\r\n * Semi-controlled: the `checked` prop is mutable — the component\r\n * updates it internally AND emits an `update` event. The consumer can\r\n * either listen to `update` to manage state externally, or use it\r\n * standalone without any event wiring.\r\n *\r\n * Accessibility:\r\n * - Native `<input type=\"checkbox\">` inside Shadow DOM with delegatesFocus\r\n * - `aria-checked=\"mixed\"` set automatically when `indeterminate` is true\r\n * - `aria-describedby` wires the message element when state is error/success\r\n * - `role` is implicit from native input — no extra ARIA needed\r\n *\r\n * Usage:\r\n * <diwa-checkbox label=\"Accept terms\" checked={accepted}\r\n * onupdate={e => setAccepted(e.detail.checked)} />\r\n *\r\n * Note (V1): The inner <input name> is inside Shadow DOM and is therefore\r\n * not visible to ancestor <form> elements for native form submission.\r\n * Use ElementInternals (V2) or submit via JavaScript instead.\r\n */\r\n@Component({\r\n tag: 'diwa-checkbox',\r\n shadow: { delegatesFocus: true },\r\n})\r\nexport class DiwaCheckbox {\r\n @Element() host!: HTMLDiwaCheckboxElement;\r\n\r\n // ──────────────────────────────────────────────────────────────\r\n // Props\r\n // ──────────────────────────────────────────────────────────────\r\n\r\n /** Per-component theme override (`light` / `dark`). */\r\n @Prop({ reflect: true }) theme: Theme = 'dark';\r\n\r\n /** Visible label text rendered next to the checkbox. */\r\n @Prop() label: string = '';\r\n\r\n /** Native name attribute (identifies the field in JS / form data). */\r\n @Prop() name: string = '';\r\n\r\n /** Value submitted/emitted when the checkbox is checked. */\r\n @Prop() value: string = 'on';\r\n\r\n /**\r\n * Whether the checkbox is checked.\r\n *\r\n * Semi-controlled: mutates internally on user interaction and\r\n * also emits an `update` event so the consumer can sync their state.\r\n */\r\n @Prop({ mutable: true, reflect: true }) checked: boolean = false;\r\n\r\n /**\r\n * Indeterminate state — renders a dash icon and sets `aria-checked=\"mixed\"`.\r\n * Setting this to `true` takes visual precedence over `checked`.\r\n * The consumer is responsible for clearing it once the user toggles.\r\n */\r\n @Prop({ reflect: true }) indeterminate: boolean = false;\r\n\r\n /** Puts the checkbox in a disabled state. Blocks interaction. */\r\n @Prop({ reflect: true }) disabled: boolean = false;\r\n\r\n /** Marks the field as required. Shows a visual asterisk in the label. */\r\n @Prop() required: boolean = false;\r\n\r\n /** Validation state: `'none'` (default), `'error'`, or `'success'`. */\r\n @Prop({ reflect: true }) state: CheckboxState = 'none';\r\n\r\n /** Helper / validation message shown below the checkbox. Only shown when state ≠ 'none'. */\r\n @Prop() message: string = '';\r\n\r\n /** Reduces the checkbox size from 20 px to 14 px for denser layouts. */\r\n @Prop({ reflect: true }) compact: boolean = false;\r\n\r\n /** Hides the label visually while keeping it accessible to screen readers. */\r\n @Prop({ reflect: true, attribute: 'hide-label' }) hideLabel: boolean = false;\r\n\r\n // ──────────────────────────────────────────────────────────────\r\n // Events\r\n // ──────────────────────────────────────────────────────────────\r\n\r\n /**\r\n * Emitted when the user toggles the checkbox.\r\n * `event.detail.checked` is the new checked state.\r\n *\r\n * React consumers: use the lowercase `onupdate` prop:\r\n * ```jsx\r\n * <diwa-checkbox onupdate={e => setChecked(e.detail.checked)} />\r\n * ```\r\n */\r\n @Event({ bubbles: false, composed: false })\r\n update!: EventEmitter<{ checked: boolean; name: string; value: string }>;\r\n\r\n // ──────────────────────────────────────────────────────────────\r\n // Private state\r\n // ──────────────────────────────────────────────────────────────\r\n\r\n private checkboxEl?: HTMLInputElement;\r\n\r\n // ──────────────────────────────────────────────────────────────\r\n // Watchers\r\n // ──────────────────────────────────────────────────────────────\r\n\r\n /** Keep the native input's non-reflected .indeterminate property in sync. */\r\n @Watch('indeterminate')\r\n watchIndeterminate(value: boolean) {\r\n if (this.checkboxEl) {\r\n this.checkboxEl.indeterminate = value;\r\n }\r\n }\r\n\r\n // ──────────────────────────────────────────────────────────────\r\n // Private helpers\r\n // ──────────────────────────────────────────────────────────────\r\n\r\n private handleChange = (e: Event): void => {\r\n const input = e.target as HTMLInputElement;\r\n this.checked = input.checked;\r\n // Clear indeterminate on user interaction (standard browser behaviour)\r\n if (this.indeterminate) {\r\n this.host.removeAttribute('indeterminate');\r\n }\r\n this.update.emit({\r\n checked: this.checked,\r\n name: this.name,\r\n value: this.value,\r\n });\r\n };\r\n\r\n private setCheckboxRef = (el?: HTMLInputElement): void => {\r\n this.checkboxEl = el;\r\n if (el) {\r\n el.indeterminate = this.indeterminate;\r\n }\r\n };\r\n\r\n // ──────────────────────────────────────────────────────────────\r\n // Render\r\n // ──────────────────────────────────────────────────────────────\r\n\r\n render() {\r\n const msgId = 'diwa-checkbox-msg';\r\n const hasMessage = !!this.message && this.state !== 'none';\r\n\r\n return (\r\n <Host data-theme={this.theme}>\r\n <style\r\n innerHTML={getComponentCss(\r\n this.state,\r\n this.disabled,\r\n this.compact,\r\n this.hideLabel,\r\n )}\r\n />\r\n\r\n <div class=\"root\">\r\n <div class=\"wrapper\">\r\n <div class=\"input-container\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"cb\"\r\n checked={this.checked}\r\n disabled={this.disabled}\r\n required={this.required}\r\n name={this.name}\r\n value={this.value}\r\n aria-checked={this.indeterminate ? 'mixed' : undefined}\r\n aria-describedby={hasMessage ? msgId : undefined}\r\n onChange={this.handleChange}\r\n ref={this.setCheckboxRef}\r\n />\r\n </div>\r\n\r\n {this.label && (\r\n <label\r\n class={`label${this.hideLabel ? ' label--hidden' : ''}`}\r\n htmlFor=\"cb\"\r\n >\r\n {this.label}\r\n {this.required && (\r\n <span class=\"required\" aria-hidden=\"true\">\r\n {' '}*\r\n </span>\r\n )}\r\n </label>\r\n )}\r\n </div>\r\n\r\n {hasMessage && (\r\n <span id={msgId} class=\"message\">\r\n {this.message}\r\n </span>\r\n )}\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"version":3}
|
|
1
|
+
{"file":"diwa-checkbox.js","mappings":"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","names":["DiwaCheckbox"],"sources":["src/components/diwa-checkbox/diwa-checkbox-styles.ts","src/components/diwa-checkbox/diwa-checkbox.tsx"],"sourcesContent":["import type { CheckboxState } from './types';\r\nimport { getFocusStyle, getReducedMotionStyle } from '../../utils/styles';\r\nimport { checkmarkSvg, getCheckboxBoxCss } from '../../utils/checkbox-mark';\r\n\r\n/** White horizontal dash for indeterminate state on a 12×12 viewBox */\r\nconst indeterminateSvg = `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Crect x='2.5' y='5.25' width='7' height='1.5' rx='0.75' fill='white'/%3E%3C/svg%3E\")`;\r\n\r\nexport const getComponentCss = (\r\n state: CheckboxState,\r\n _disabled: boolean,\r\n compact: boolean,\r\n _hideLabel: boolean,\r\n): string => {\r\n const boxSize = compact ? '14px' : '20px';\r\n const messageColor =\r\n state === 'error'\r\n ? 'var(--diwa-notification-error)'\r\n : state === 'success'\r\n ? 'var(--diwa-notification-success)'\r\n : 'var(--diwa-text-secondary)';\r\n\r\n return `\r\n\r\n /* ── Host ─────────────────────────────────────────────────────────── */\r\n\r\n :host {\r\n display: inline-block;\r\n font-family: var(--diwa-font-family-base);\r\n outline: none;\r\n }\r\n\r\n :host([hidden]) {\r\n display: none;\r\n }\r\n\r\n /* ── Root layout ──────────────────────────────────────────────────── */\r\n\r\n .root {\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--diwa-space-1);\r\n }\r\n\r\n /* ── Wrapper: checkbox + label side by side ───────────────────────── */\r\n\r\n .wrapper {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: var(--diwa-space-3);\r\n cursor: pointer;\r\n }\r\n\r\n :host([disabled]) .wrapper {\r\n cursor: not-allowed;\r\n }\r\n\r\n /* ── Input container ──────────────────────────────────────────────── */\r\n\r\n .input-container {\r\n position: relative;\r\n flex-shrink: 0;\r\n width: ${boxSize};\r\n height: ${boxSize};\r\n }\r\n\r\n /* ── Native checkbox ──────────────────────────────────────────────── */\r\n\r\n input[type=\"checkbox\"] {\r\n appearance: none;\r\n -webkit-appearance: none;\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n margin: 0;\r\n padding: 0;\r\n box-sizing: border-box;\r\n cursor: pointer;\r\n\r\n ${getCheckboxBoxCss()}\r\n }\r\n\r\n input[type=\"checkbox\"]:disabled {\r\n cursor: not-allowed;\r\n }\r\n\r\n /* ── Focus ring ───────────────────────────────────────────────────── */\r\n\r\n ${getFocusStyle('input[type=\"checkbox\"]')}\r\n\r\n /* ── Hover ────────────────────────────────────────────────────────── */\r\n\r\n input[type=\"checkbox\"]:hover:not(:disabled) {\r\n border-color: var(--diwa-accent);\r\n background-color: var(--diwa-bg-hover);\r\n }\r\n\r\n /* ── Checked state ────────────────────────────────────────────────── */\r\n\r\n input[type=\"checkbox\"]:checked {\r\n background-color: var(--diwa-accent);\r\n border-color: var(--diwa-accent);\r\n background-image: ${checkmarkSvg};\r\n }\r\n\r\n input[type=\"checkbox\"]:checked:hover:not(:disabled) {\r\n background-color: var(--diwa-accent-hover);\r\n border-color: var(--diwa-accent-hover);\r\n }\r\n\r\n /* ── Indeterminate state ──────────────────────────────────────────── */\r\n\r\n input[type=\"checkbox\"]:indeterminate {\r\n background-color: var(--diwa-accent);\r\n border-color: var(--diwa-accent);\r\n background-image: ${indeterminateSvg};\r\n }\r\n\r\n input[type=\"checkbox\"]:indeterminate:hover:not(:disabled) {\r\n background-color: var(--diwa-accent-hover);\r\n border-color: var(--diwa-accent-hover);\r\n }\r\n\r\n /* ── Validation states ────────────────────────────────────────────── */\r\n\r\n :host([state=\"error\"]) input[type=\"checkbox\"]:not(:checked):not(:indeterminate) {\r\n border-color: var(--diwa-notification-error);\r\n }\r\n\r\n :host([state=\"error\"]) input[type=\"checkbox\"]:not(:checked):not(:indeterminate):hover:not(:disabled) {\r\n border-color: var(--diwa-notification-error);\r\n background-color: var(--diwa-bg-hover);\r\n }\r\n\r\n :host([state=\"success\"]) input[type=\"checkbox\"]:not(:checked):not(:indeterminate) {\r\n border-color: var(--diwa-notification-success);\r\n }\r\n\r\n :host([state=\"success\"]) input[type=\"checkbox\"]:not(:checked):not(:indeterminate):hover:not(:disabled) {\r\n border-color: var(--diwa-notification-success);\r\n background-color: var(--diwa-bg-hover);\r\n }\r\n\r\n /* ── Disabled ─────────────────────────────────────────────────────── */\r\n\r\n :host([disabled]) {\r\n opacity: var(--diwa-opacity-disabled);\r\n pointer-events: none;\r\n }\r\n\r\n /* ── Label ────────────────────────────────────────────────────────── */\r\n\r\n .label {\r\n font-size: var(--diwa-font-size-base);\r\n font-weight: var(--diwa-font-weight-regular);\r\n line-height: 1.5;\r\n color: var(--diwa-text-primary);\r\n cursor: pointer;\r\n }\r\n\r\n :host([disabled]) .label {\r\n cursor: not-allowed;\r\n }\r\n\r\n /* Visually-hidden label (still read by screen readers) */\r\n .label--hidden {\r\n border: 0;\r\n clip: rect(0, 0, 0, 0);\r\n height: 1px;\r\n margin: -1px;\r\n overflow: hidden;\r\n padding: 0;\r\n position: absolute;\r\n white-space: nowrap;\r\n width: 1px;\r\n }\r\n\r\n /* Required asterisk */\r\n .required {\r\n color: var(--diwa-notification-error);\r\n margin-left: var(--diwa-space-0-5);\r\n }\r\n\r\n /* ── Message ──────────────────────────────────────────────────────── */\r\n\r\n .message {\r\n display: block;\r\n font-size: var(--diwa-font-size-sm);\r\n line-height: 1.4;\r\n color: ${messageColor};\r\n /* Indent to align under the label, not the checkbox */\r\n padding-left: calc(${boxSize} + var(--diwa-space-3));\r\n }\r\n\r\n /* ── Reduced motion ───────────────────────────────────────────────── */\r\n\r\n ${getReducedMotionStyle('input[type=\"checkbox\"]')}\r\n`;\r\n};\r\n","import { Component, Element, Event, type EventEmitter, Host, Prop, Watch, h } from '@stencil/core';\r\nimport type { CheckboxState } from './types';\r\nimport type { Theme } from '../../utils/styles';\r\nimport { getComponentCss } from './diwa-checkbox-styles';\r\n\r\n/**\r\n * @component diwa-checkbox\r\n *\r\n * A fully accessible checkbox control with label, validation state,\r\n * and indeterminate support. Mirrors the PDS p-checkbox API.\r\n *\r\n * Semi-controlled: the `checked` prop is mutable — the component\r\n * updates it internally AND emits an `update` event. The consumer can\r\n * either listen to `update` to manage state externally, or use it\r\n * standalone without any event wiring.\r\n *\r\n * Accessibility:\r\n * - Native `<input type=\"checkbox\">` inside Shadow DOM with delegatesFocus\r\n * - `aria-checked=\"mixed\"` set automatically when `indeterminate` is true\r\n * - `aria-describedby` wires the message element when state is error/success\r\n * - `role` is implicit from native input — no extra ARIA needed\r\n *\r\n * Usage:\r\n * <diwa-checkbox label=\"Accept terms\" checked={accepted}\r\n * onupdate={e => setAccepted(e.detail.checked)} />\r\n *\r\n * Note (V1): The inner <input name> is inside Shadow DOM and is therefore\r\n * not visible to ancestor <form> elements for native form submission.\r\n * Use ElementInternals (V2) or submit via JavaScript instead.\r\n */\r\n@Component({\r\n tag: 'diwa-checkbox',\r\n shadow: { delegatesFocus: true },\r\n})\r\nexport class DiwaCheckbox {\r\n @Element() host!: HTMLDiwaCheckboxElement;\r\n\r\n // ──────────────────────────────────────────────────────────────\r\n // Props\r\n // ──────────────────────────────────────────────────────────────\r\n\r\n /** Per-component theme override (`light` / `dark`). */\r\n @Prop({ reflect: true }) theme: Theme = 'dark';\r\n\r\n /** Visible label text rendered next to the checkbox. */\r\n @Prop() label: string = '';\r\n\r\n /** Native name attribute (identifies the field in JS / form data). */\r\n @Prop() name: string = '';\r\n\r\n /** Value submitted/emitted when the checkbox is checked. */\r\n @Prop() value: string = 'on';\r\n\r\n /**\r\n * Whether the checkbox is checked.\r\n *\r\n * Semi-controlled: mutates internally on user interaction and\r\n * also emits an `update` event so the consumer can sync their state.\r\n */\r\n @Prop({ mutable: true, reflect: true }) checked: boolean = false;\r\n\r\n /**\r\n * Indeterminate state — renders a dash icon and sets `aria-checked=\"mixed\"`.\r\n * Setting this to `true` takes visual precedence over `checked`.\r\n * The consumer is responsible for clearing it once the user toggles.\r\n */\r\n @Prop({ reflect: true }) indeterminate: boolean = false;\r\n\r\n /** Puts the checkbox in a disabled state. Blocks interaction. */\r\n @Prop({ reflect: true }) disabled: boolean = false;\r\n\r\n /** Marks the field as required. Shows a visual asterisk in the label. */\r\n @Prop() required: boolean = false;\r\n\r\n /** Validation state: `'none'` (default), `'error'`, or `'success'`. */\r\n @Prop({ reflect: true }) state: CheckboxState = 'none';\r\n\r\n /** Helper / validation message shown below the checkbox. Only shown when state ≠ 'none'. */\r\n @Prop() message: string = '';\r\n\r\n /** Reduces the checkbox size from 20 px to 14 px for denser layouts. */\r\n @Prop({ reflect: true }) compact: boolean = false;\r\n\r\n /** Hides the label visually while keeping it accessible to screen readers. */\r\n @Prop({ reflect: true, attribute: 'hide-label' }) hideLabel: boolean = false;\r\n\r\n // ──────────────────────────────────────────────────────────────\r\n // Events\r\n // ──────────────────────────────────────────────────────────────\r\n\r\n /**\r\n * Emitted when the user toggles the checkbox.\r\n * `event.detail.checked` is the new checked state.\r\n *\r\n * React consumers: use the lowercase `onupdate` prop:\r\n * ```jsx\r\n * <diwa-checkbox onupdate={e => setChecked(e.detail.checked)} />\r\n * ```\r\n */\r\n @Event({ bubbles: false, composed: false })\r\n update!: EventEmitter<{ checked: boolean; name: string; value: string }>;\r\n\r\n // ──────────────────────────────────────────────────────────────\r\n // Private state\r\n // ──────────────────────────────────────────────────────────────\r\n\r\n private checkboxEl?: HTMLInputElement;\r\n\r\n // ──────────────────────────────────────────────────────────────\r\n // Watchers\r\n // ──────────────────────────────────────────────────────────────\r\n\r\n /** Keep the native input's non-reflected .indeterminate property in sync. */\r\n @Watch('indeterminate')\r\n watchIndeterminate(value: boolean) {\r\n if (this.checkboxEl) {\r\n this.checkboxEl.indeterminate = value;\r\n }\r\n }\r\n\r\n // ──────────────────────────────────────────────────────────────\r\n // Private helpers\r\n // ──────────────────────────────────────────────────────────────\r\n\r\n private handleChange = (e: Event): void => {\r\n const input = e.target as HTMLInputElement;\r\n this.checked = input.checked;\r\n // Clear indeterminate on user interaction (standard browser behaviour)\r\n if (this.indeterminate) {\r\n this.host.removeAttribute('indeterminate');\r\n }\r\n this.update.emit({\r\n checked: this.checked,\r\n name: this.name,\r\n value: this.value,\r\n });\r\n };\r\n\r\n private setCheckboxRef = (el?: HTMLInputElement): void => {\r\n this.checkboxEl = el;\r\n if (el) {\r\n el.indeterminate = this.indeterminate;\r\n }\r\n };\r\n\r\n // ──────────────────────────────────────────────────────────────\r\n // Render\r\n // ──────────────────────────────────────────────────────────────\r\n\r\n render() {\r\n const msgId = 'diwa-checkbox-msg';\r\n const hasMessage = !!this.message && this.state !== 'none';\r\n\r\n return (\r\n <Host data-theme={this.theme}>\r\n <style\r\n innerHTML={getComponentCss(\r\n this.state,\r\n this.disabled,\r\n this.compact,\r\n this.hideLabel,\r\n )}\r\n />\r\n\r\n <div class=\"root\">\r\n <div class=\"wrapper\">\r\n <div class=\"input-container\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"cb\"\r\n checked={this.checked}\r\n disabled={this.disabled}\r\n required={this.required}\r\n name={this.name}\r\n value={this.value}\r\n aria-checked={this.indeterminate ? 'mixed' : undefined}\r\n aria-describedby={hasMessage ? msgId : undefined}\r\n onChange={this.handleChange}\r\n ref={this.setCheckboxRef}\r\n />\r\n </div>\r\n\r\n {this.label && (\r\n <label\r\n class={`label${this.hideLabel ? ' label--hidden' : ''}`}\r\n htmlFor=\"cb\"\r\n >\r\n {this.label}\r\n {this.required && (\r\n <span class=\"required\" aria-hidden=\"true\">\r\n {' '}*\r\n </span>\r\n )}\r\n </label>\r\n )}\r\n </div>\r\n\r\n {hasMessage && (\r\n <span id={msgId} class=\"message\">\r\n {this.message}\r\n </span>\r\n )}\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"version":3}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { p as proxyCustomElement, H, c as createEvent, h, d as Host } from './p-5eacc7d0.js';
|
|
2
2
|
import { a as getReducedMotionStyle } from './p-70bbb21a.js';
|
|
3
|
-
import { d as defineCustomElement$3 } from './p-
|
|
4
|
-
import { d as defineCustomElement$2 } from './p-
|
|
3
|
+
import { d as defineCustomElement$3 } from './p-105f3f97.js';
|
|
4
|
+
import { d as defineCustomElement$2 } from './p-8972ae69.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* diwa-flyout-styles.ts
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../dist/types/components";
|
|
2
|
+
|
|
3
|
+
interface DiwaHeading extends Components.DiwaHeading, HTMLElement {}
|
|
4
|
+
export const DiwaHeading: {
|
|
5
|
+
prototype: DiwaHeading;
|
|
6
|
+
new (): DiwaHeading;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { p as proxyCustomElement, H, h, d as Host } from './p-5eacc7d0.js';
|
|
2
|
+
|
|
3
|
+
const FONT_SIZE = {
|
|
4
|
+
'display': 'var(--diwa-heading-font-size, var(--diwa-font-size-fluid-4xl))',
|
|
5
|
+
'h1': 'var(--diwa-heading-font-size, var(--diwa-font-size-fluid-3xl))',
|
|
6
|
+
'h2': 'var(--diwa-heading-font-size, var(--diwa-font-size-fluid-2xl))',
|
|
7
|
+
'h3': 'var(--diwa-heading-font-size, var(--diwa-font-size-fluid-xl))',
|
|
8
|
+
'h4': 'var(--diwa-heading-font-size, var(--diwa-font-size-fluid-lg))',
|
|
9
|
+
'h5': 'var(--diwa-heading-font-size, var(--diwa-font-size-fluid-base))',
|
|
10
|
+
'h6': 'var(--diwa-heading-font-size, var(--diwa-font-size-fluid-sm))',
|
|
11
|
+
'inherit': 'var(--diwa-heading-font-size, inherit)',
|
|
12
|
+
};
|
|
13
|
+
const LETTER_SPACING = {
|
|
14
|
+
'display': 'var(--diwa-heading-letter-spacing, -0.03em)',
|
|
15
|
+
'h1': 'var(--diwa-heading-letter-spacing, -0.03em)',
|
|
16
|
+
'h2': 'var(--diwa-heading-letter-spacing, -0.015em)',
|
|
17
|
+
'h3': 'var(--diwa-heading-letter-spacing, -0.015em)',
|
|
18
|
+
'h4': 'var(--diwa-heading-letter-spacing, 0)',
|
|
19
|
+
'h5': 'var(--diwa-heading-letter-spacing, 0)',
|
|
20
|
+
'h6': 'var(--diwa-heading-letter-spacing, 0)',
|
|
21
|
+
'inherit': 'var(--diwa-heading-letter-spacing, inherit)',
|
|
22
|
+
};
|
|
23
|
+
const FONT_WEIGHT = {
|
|
24
|
+
semibold: 'var(--diwa-font-weight-semibold)',
|
|
25
|
+
bold: 'var(--diwa-font-weight-bold)',
|
|
26
|
+
};
|
|
27
|
+
const COLOR = {
|
|
28
|
+
primary: 'var(--diwa-heading-color, var(--diwa-text-primary))',
|
|
29
|
+
secondary: 'var(--diwa-heading-color, var(--diwa-text-secondary))',
|
|
30
|
+
inherit: 'var(--diwa-heading-color, inherit)',
|
|
31
|
+
};
|
|
32
|
+
const getComponentCss = (size, weight, align, color, ellipsis) => `
|
|
33
|
+
|
|
34
|
+
:host {
|
|
35
|
+
display: block;
|
|
36
|
+
font-family: var(--diwa-font-family-base);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
:host([hidden]) {
|
|
40
|
+
display: none;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.heading {
|
|
44
|
+
margin: 0;
|
|
45
|
+
padding: 0;
|
|
46
|
+
font-size: ${FONT_SIZE[size]};
|
|
47
|
+
font-weight: ${FONT_WEIGHT[weight]};
|
|
48
|
+
line-height: var(--diwa-heading-line-height, var(--diwa-line-height-tight));
|
|
49
|
+
letter-spacing: ${LETTER_SPACING[size]};
|
|
50
|
+
text-align: ${align};
|
|
51
|
+
color: ${COLOR[color]};
|
|
52
|
+
${ellipsis ? 'overflow: hidden; text-overflow: ellipsis; white-space: nowrap;' : ''}
|
|
53
|
+
}
|
|
54
|
+
`;
|
|
55
|
+
|
|
56
|
+
const H_TAGS = new Set(['h1', 'h2', 'h3', 'h4', 'h5', 'h6']);
|
|
57
|
+
const SIZE_TO_TAG = {
|
|
58
|
+
display: 'h1',
|
|
59
|
+
h1: 'h1',
|
|
60
|
+
h2: 'h2',
|
|
61
|
+
h3: 'h3',
|
|
62
|
+
h4: 'h4',
|
|
63
|
+
h5: 'h5',
|
|
64
|
+
h6: 'h6',
|
|
65
|
+
inherit: 'h2',
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Resolves the HTML tag to render:
|
|
69
|
+
* 1. If any direct slotted child is an h1–h6 element → return 'div' (avoids invalid nesting).
|
|
70
|
+
* 2. If an explicit `tag` prop is provided → use it.
|
|
71
|
+
* 3. Otherwise → infer from the `size` prop.
|
|
72
|
+
*/
|
|
73
|
+
function getHeadingTag(host, size, tag) {
|
|
74
|
+
if (host && Array.from(host.children).some((el) => H_TAGS.has(el.tagName.toLowerCase()))) {
|
|
75
|
+
return 'div';
|
|
76
|
+
}
|
|
77
|
+
if (tag)
|
|
78
|
+
return tag;
|
|
79
|
+
return SIZE_TO_TAG[size];
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const DiwaHeading$1 = /*@__PURE__*/ proxyCustomElement(class DiwaHeading extends H {
|
|
83
|
+
constructor() {
|
|
84
|
+
super();
|
|
85
|
+
this.__registerHost();
|
|
86
|
+
this.__attachShadow();
|
|
87
|
+
// ──────────────────────────────────────────────────────────────
|
|
88
|
+
// Props
|
|
89
|
+
// ──────────────────────────────────────────────────────────────
|
|
90
|
+
/** Per-component theme override. */
|
|
91
|
+
this.theme = 'dark';
|
|
92
|
+
/**
|
|
93
|
+
* Visual size and inferred semantic heading level.
|
|
94
|
+
* Determines the rendered HTML tag when no explicit `tag` prop is given.
|
|
95
|
+
*/
|
|
96
|
+
this.size = 'h2';
|
|
97
|
+
/** Font weight. */
|
|
98
|
+
this.weight = 'bold';
|
|
99
|
+
/** Horizontal alignment. `start` and `end` are RTL-aware. */
|
|
100
|
+
this.align = 'start';
|
|
101
|
+
/**
|
|
102
|
+
* Colour alias. Use `inherit` to pass through the surrounding colour unchanged —
|
|
103
|
+
* useful inside cards, hero sections, or other styled containers.
|
|
104
|
+
*/
|
|
105
|
+
this.color = 'primary';
|
|
106
|
+
/**
|
|
107
|
+
* Clip overflow to a single line with a trailing ellipsis.
|
|
108
|
+
* The host element must have a defined width for this to take effect.
|
|
109
|
+
*/
|
|
110
|
+
this.ellipsis = false;
|
|
111
|
+
}
|
|
112
|
+
// ──────────────────────────────────────────────────────────────
|
|
113
|
+
// Render
|
|
114
|
+
// ──────────────────────────────────────────────────────────────
|
|
115
|
+
render() {
|
|
116
|
+
const Tag = getHeadingTag(this.host, this.size, this.tag); // eslint-disable-line @typescript-eslint/no-explicit-any
|
|
117
|
+
return (h(Host, { key: 'af31da4a1b31e1a28f9de05da4c5517dbfb7fdbd', "data-theme": this.theme }, h("style", { key: 'c9616c82eae3dada3edcf5c89b7f9b88716bae55', innerHTML: getComponentCss(this.size, this.weight, this.align, this.color, this.ellipsis) }), h(Tag, { key: 'd265ccdd08cdbc29ba15043a67769b78e8cfe4cb', class: "heading" }, h("slot", { key: '7c7bfb3d32b839469bfba2ec02173d1f71f03812' }))));
|
|
118
|
+
}
|
|
119
|
+
get host() { return this; }
|
|
120
|
+
}, [1, "diwa-heading", {
|
|
121
|
+
"theme": [513],
|
|
122
|
+
"size": [513],
|
|
123
|
+
"tag": [513],
|
|
124
|
+
"weight": [513],
|
|
125
|
+
"align": [513],
|
|
126
|
+
"color": [513],
|
|
127
|
+
"ellipsis": [516]
|
|
128
|
+
}]);
|
|
129
|
+
function defineCustomElement$1() {
|
|
130
|
+
if (typeof customElements === "undefined") {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const components = ["diwa-heading"];
|
|
134
|
+
components.forEach(tagName => { switch (tagName) {
|
|
135
|
+
case "diwa-heading":
|
|
136
|
+
if (!customElements.get(tagName)) {
|
|
137
|
+
customElements.define(tagName, DiwaHeading$1);
|
|
138
|
+
}
|
|
139
|
+
break;
|
|
140
|
+
} });
|
|
141
|
+
}
|
|
142
|
+
defineCustomElement$1();
|
|
143
|
+
|
|
144
|
+
const DiwaHeading = DiwaHeading$1;
|
|
145
|
+
const defineCustomElement = defineCustomElement$1;
|
|
146
|
+
|
|
147
|
+
export { DiwaHeading, defineCustomElement };
|
|
148
|
+
|
|
149
|
+
//# sourceMappingURL=diwa-heading.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"diwa-heading.js","mappings":"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","names":["DiwaHeading"],"sources":["src/components/diwa-heading/diwa-heading-styles.ts","src/components/diwa-heading/diwa-heading-utils.ts","src/components/diwa-heading/diwa-heading.tsx"],"sourcesContent":["import type { HeadingAlign, HeadingColor, HeadingSize, HeadingWeight } from './types';\r\n\r\nconst FONT_SIZE: Record<HeadingSize, string> = {\r\n 'display': 'var(--diwa-heading-font-size, var(--diwa-font-size-fluid-4xl))',\r\n 'h1': 'var(--diwa-heading-font-size, var(--diwa-font-size-fluid-3xl))',\r\n 'h2': 'var(--diwa-heading-font-size, var(--diwa-font-size-fluid-2xl))',\r\n 'h3': 'var(--diwa-heading-font-size, var(--diwa-font-size-fluid-xl))',\r\n 'h4': 'var(--diwa-heading-font-size, var(--diwa-font-size-fluid-lg))',\r\n 'h5': 'var(--diwa-heading-font-size, var(--diwa-font-size-fluid-base))',\r\n 'h6': 'var(--diwa-heading-font-size, var(--diwa-font-size-fluid-sm))',\r\n 'inherit': 'var(--diwa-heading-font-size, inherit)',\r\n};\r\n\r\nconst LETTER_SPACING: Record<HeadingSize, string> = {\r\n 'display': 'var(--diwa-heading-letter-spacing, -0.03em)',\r\n 'h1': 'var(--diwa-heading-letter-spacing, -0.03em)',\r\n 'h2': 'var(--diwa-heading-letter-spacing, -0.015em)',\r\n 'h3': 'var(--diwa-heading-letter-spacing, -0.015em)',\r\n 'h4': 'var(--diwa-heading-letter-spacing, 0)',\r\n 'h5': 'var(--diwa-heading-letter-spacing, 0)',\r\n 'h6': 'var(--diwa-heading-letter-spacing, 0)',\r\n 'inherit': 'var(--diwa-heading-letter-spacing, inherit)',\r\n};\r\n\r\nconst FONT_WEIGHT: Record<HeadingWeight, string> = {\r\n semibold: 'var(--diwa-font-weight-semibold)',\r\n bold: 'var(--diwa-font-weight-bold)',\r\n};\r\n\r\nconst COLOR: Record<HeadingColor, string> = {\r\n primary: 'var(--diwa-heading-color, var(--diwa-text-primary))',\r\n secondary: 'var(--diwa-heading-color, var(--diwa-text-secondary))',\r\n inherit: 'var(--diwa-heading-color, inherit)',\r\n};\r\n\r\nexport const getComponentCss = (\r\n size: HeadingSize,\r\n weight: HeadingWeight,\r\n align: HeadingAlign,\r\n color: HeadingColor,\r\n ellipsis: boolean,\r\n): string => `\r\n\r\n :host {\r\n display: block;\r\n font-family: var(--diwa-font-family-base);\r\n }\r\n\r\n :host([hidden]) {\r\n display: none;\r\n }\r\n\r\n .heading {\r\n margin: 0;\r\n padding: 0;\r\n font-size: ${FONT_SIZE[size]};\r\n font-weight: ${FONT_WEIGHT[weight]};\r\n line-height: var(--diwa-heading-line-height, var(--diwa-line-height-tight));\r\n letter-spacing: ${LETTER_SPACING[size]};\r\n text-align: ${align};\r\n color: ${COLOR[color]};\r\n ${ellipsis ? 'overflow: hidden; text-overflow: ellipsis; white-space: nowrap;' : ''}\r\n }\r\n`;\r\n","import type { HeadingSize, HeadingTag } from './types';\r\n\r\nconst H_TAGS = new Set(['h1', 'h2', 'h3', 'h4', 'h5', 'h6']);\r\n\r\nexport const SIZE_TO_TAG: Record<HeadingSize, HeadingTag> = {\r\n display: 'h1',\r\n h1: 'h1',\r\n h2: 'h2',\r\n h3: 'h3',\r\n h4: 'h4',\r\n h5: 'h5',\r\n h6: 'h6',\r\n inherit: 'h2',\r\n};\r\n\r\n/**\r\n * Resolves the HTML tag to render:\r\n * 1. If any direct slotted child is an h1–h6 element → return 'div' (avoids invalid nesting).\r\n * 2. If an explicit `tag` prop is provided → use it.\r\n * 3. Otherwise → infer from the `size` prop.\r\n */\r\nexport function getHeadingTag(\r\n host: HTMLElement | null,\r\n size: HeadingSize,\r\n tag: HeadingTag | undefined,\r\n): HeadingTag {\r\n if (host && Array.from(host.children).some((el) => H_TAGS.has(el.tagName.toLowerCase()))) {\r\n return 'div';\r\n }\r\n if (tag) return tag;\r\n return SIZE_TO_TAG[size];\r\n}\r\n","import { Component, Element, Host, Prop, h } from '@stencil/core';\r\nimport type { HeadingAlign, HeadingColor, HeadingSize, HeadingTag, HeadingWeight } from './types';\r\nimport type { Theme } from '../../utils/styles';\r\nimport { getComponentCss } from './diwa-heading-styles';\r\nimport { getHeadingTag } from './diwa-heading-utils';\r\n\r\n/**\r\n * @component diwa-heading\r\n *\r\n * A responsive heading renderer that maps a visual size scale onto the\r\n * correct semantic HTML heading element. Font sizes use fluid type tokens\r\n * that scale between viewport sizes.\r\n *\r\n * Usage:\r\n * <diwa-heading size=\"h1\">Page title</diwa-heading>\r\n * <diwa-heading size=\"display\" color=\"secondary\">Hero headline</diwa-heading>\r\n * <diwa-heading size=\"h3\" tag=\"h2\">Visual h3, semantic h2</diwa-heading>\r\n *\r\n * @slot default — Heading text content. Inline elements are allowed; block elements are not.\r\n */\r\n@Component({\r\n tag: 'diwa-heading',\r\n shadow: true,\r\n})\r\nexport class DiwaHeading {\r\n @Element() private host!: HTMLElement;\r\n\r\n // ──────────────────────────────────────────────────────────────\r\n // Props\r\n // ──────────────────────────────────────────────────────────────\r\n\r\n /** Per-component theme override. */\r\n @Prop({ reflect: true }) theme: Theme = 'dark';\r\n\r\n /**\r\n * Visual size and inferred semantic heading level.\r\n * Determines the rendered HTML tag when no explicit `tag` prop is given.\r\n */\r\n @Prop({ reflect: true }) size: HeadingSize = 'h2';\r\n\r\n /**\r\n * Override the rendered HTML tag.\r\n * Use when the visual size must differ from the semantic level —\r\n * e.g. a visually-large `h3` inside a section that already has an `h2`.\r\n * If omitted, the tag is inferred from `size`.\r\n */\r\n @Prop({ reflect: true }) tag?: HeadingTag;\r\n\r\n /** Font weight. */\r\n @Prop({ reflect: true }) weight: HeadingWeight = 'bold';\r\n\r\n /** Horizontal alignment. `start` and `end` are RTL-aware. */\r\n @Prop({ reflect: true }) align: HeadingAlign = 'start';\r\n\r\n /**\r\n * Colour alias. Use `inherit` to pass through the surrounding colour unchanged —\r\n * useful inside cards, hero sections, or other styled containers.\r\n */\r\n @Prop({ reflect: true }) color: HeadingColor = 'primary';\r\n\r\n /**\r\n * Clip overflow to a single line with a trailing ellipsis.\r\n * The host element must have a defined width for this to take effect.\r\n */\r\n @Prop({ reflect: true }) ellipsis: boolean = false;\r\n\r\n // ──────────────────────────────────────────────────────────────\r\n // Render\r\n // ──────────────────────────────────────────────────────────────\r\n\r\n render() {\r\n const Tag = getHeadingTag(this.host, this.size, this.tag) as any; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n\r\n return (\r\n <Host data-theme={this.theme}>\r\n <style innerHTML={getComponentCss(this.size, this.weight, this.align, this.color, this.ellipsis)} />\r\n <Tag class=\"heading\">\r\n <slot />\r\n </Tag>\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"version":3}
|