@kodaris/krubble-components 1.0.59 → 1.0.61

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.
@@ -89,7 +89,7 @@ const e$4=(e,t,c)=>(c.configurable=true,c.enumerable=true,Reflect.decorate&&"obj
89
89
  * SPDX-License-Identifier: BSD-3-Clause
90
90
  */function e$3(e,r){return (n,s,i)=>{const o=t=>t.renderRoot?.querySelector(e)??null;return e$4(n,s,{get(){return o(this)}})}}
91
91
 
92
- var __decorate$k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
92
+ var __decorate$l = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
93
93
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
94
94
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
95
95
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -196,13 +196,13 @@ KRAccordion.styles = i$5 `
196
196
  padding: 16px 16px 8px 16px;
197
197
  }
198
198
  `;
199
- __decorate$k([
199
+ __decorate$l([
200
200
  n$1({ type: String })
201
201
  ], KRAccordion.prototype, "header", void 0);
202
- __decorate$k([
202
+ __decorate$l([
203
203
  n$1({ type: Boolean, reflect: true })
204
204
  ], KRAccordion.prototype, "expanded", void 0);
205
- KRAccordion = __decorate$k([
205
+ KRAccordion = __decorate$l([
206
206
  t$1('kr-accordion')
207
207
  ], KRAccordion);
208
208
 
@@ -219,7 +219,7 @@ const t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4},e$2=t=>(...e)=>({_$
219
219
  * SPDX-License-Identifier: BSD-3-Clause
220
220
  */const e$1=e$2(class extends i$1{constructor(t$1){if(super(t$1),t$1.type!==t.ATTRIBUTE||"class"!==t$1.name||t$1.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(t){return " "+Object.keys(t).filter(s=>t[s]).join(" ")+" "}update(s,[i]){if(void 0===this.st){this.st=new Set,void 0!==s.strings&&(this.nt=new Set(s.strings.join(" ").split(/\s/).filter(t=>""!==t)));for(const t in i)i[t]&&!this.nt?.has(t)&&this.st.add(t);return this.render(i)}const r=s.element.classList;for(const t of this.st)t in i||(r.remove(t),this.st.delete(t));for(const t in i){const s=!!i[t];s===this.st.has(t)||this.nt?.has(t)||(s?(r.add(t),this.st.add(t)):(r.remove(t),this.st.delete(t)));}return E}});
221
221
 
222
- var __decorate$j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
222
+ var __decorate$k = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
223
223
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
224
224
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
225
225
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -417,23 +417,23 @@ KRAlert.styles = i$5 `
417
417
  outline-offset: 2px;
418
418
  }
419
419
  `;
420
- __decorate$j([
420
+ __decorate$k([
421
421
  n$1({ type: String })
422
422
  ], KRAlert.prototype, "type", void 0);
423
- __decorate$j([
423
+ __decorate$k([
424
424
  n$1({ type: String })
425
425
  ], KRAlert.prototype, "title", void 0);
426
- __decorate$j([
426
+ __decorate$k([
427
427
  n$1({ type: Boolean })
428
428
  ], KRAlert.prototype, "dismissible", void 0);
429
- __decorate$j([
429
+ __decorate$k([
430
430
  n$1({ type: Boolean })
431
431
  ], KRAlert.prototype, "visible", void 0);
432
- KRAlert = __decorate$j([
432
+ KRAlert = __decorate$k([
433
433
  t$1('kr-alert')
434
434
  ], KRAlert);
435
435
 
436
- var __decorate$i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
436
+ var __decorate$j = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
437
437
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
438
438
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
439
439
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -932,40 +932,40 @@ KRButton.styles = i$5 `
932
932
  height: 22px;
933
933
  }
934
934
  `;
935
- __decorate$i([
935
+ __decorate$j([
936
936
  n$1({ type: String, reflect: true })
937
937
  ], KRButton.prototype, "variant", void 0);
938
- __decorate$i([
938
+ __decorate$j([
939
939
  n$1({ type: String, reflect: true })
940
940
  ], KRButton.prototype, "color", void 0);
941
- __decorate$i([
941
+ __decorate$j([
942
942
  n$1({ type: String, reflect: true })
943
943
  ], KRButton.prototype, "size", void 0);
944
- __decorate$i([
944
+ __decorate$j([
945
945
  n$1({ type: Boolean, reflect: true })
946
946
  ], KRButton.prototype, "disabled", void 0);
947
- __decorate$i([
947
+ __decorate$j([
948
948
  n$1({ type: String })
949
949
  ], KRButton.prototype, "href", void 0);
950
- __decorate$i([
950
+ __decorate$j([
951
951
  n$1({ type: String })
952
952
  ], KRButton.prototype, "target", void 0);
953
- __decorate$i([
953
+ __decorate$j([
954
954
  n$1({ type: Array })
955
955
  ], KRButton.prototype, "options", void 0);
956
- __decorate$i([
956
+ __decorate$j([
957
957
  n$1({ type: String, reflect: true, attribute: 'icon-position' })
958
958
  ], KRButton.prototype, "iconPosition", void 0);
959
- __decorate$i([
959
+ __decorate$j([
960
960
  r$1()
961
961
  ], KRButton.prototype, "_state", void 0);
962
- __decorate$i([
962
+ __decorate$j([
963
963
  r$1()
964
964
  ], KRButton.prototype, "_stateText", void 0);
965
- __decorate$i([
965
+ __decorate$j([
966
966
  r$1()
967
967
  ], KRButton.prototype, "_dropdownOpened", void 0);
968
- KRButton = __decorate$i([
968
+ KRButton = __decorate$j([
969
969
  t$1('kr-button')
970
970
  ], KRButton);
971
971
 
@@ -975,7 +975,7 @@ KRButton = __decorate$i([
975
975
  * SPDX-License-Identifier: BSD-3-Clause
976
976
  */class e extends i$1{constructor(i){if(super(i),this.it=A,i.type!==t.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(r){if(r===A||null==r)return this._t=void 0,this.it=r;if(r===E)return r;if("string"!=typeof r)throw Error(this.constructor.directiveName+"() called with a non-string value");if(r===this.it)return this._t;this.it=r;const s=[r];return s.raw=s,this._t={_$litType$:this.constructor.resultType,strings:s,values:[]}}}e.directiveName="unsafeHTML",e.resultType=1;const o$2=e$2(e);
977
977
 
978
- var __decorate$h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
978
+ var __decorate$i = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
979
979
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
980
980
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
981
981
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -1091,7 +1091,7 @@ KRCodeDemo.styles = [krBaseCSS, i$5 `
1091
1091
  display: block;
1092
1092
  border: 1px solid #d5dbdb;
1093
1093
  border-radius: 8px;
1094
- overflow: hidden;
1094
+ overflow: visible;
1095
1095
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
1096
1096
  }
1097
1097
 
@@ -1209,26 +1209,26 @@ KRCodeDemo.styles = [krBaseCSS, i$5 `
1209
1209
  .hljs-property { color: #005cc5; }
1210
1210
 
1211
1211
  `];
1212
- __decorate$h([
1212
+ __decorate$i([
1213
1213
  n$1({ type: String })
1214
1214
  ], KRCodeDemo.prototype, "language", void 0);
1215
- __decorate$h([
1215
+ __decorate$i([
1216
1216
  r$1()
1217
1217
  ], KRCodeDemo.prototype, "code", void 0);
1218
- __decorate$h([
1218
+ __decorate$i([
1219
1219
  r$1()
1220
1220
  ], KRCodeDemo.prototype, "activeTab", void 0);
1221
- __decorate$h([
1221
+ __decorate$i([
1222
1222
  r$1()
1223
1223
  ], KRCodeDemo.prototype, "copied", void 0);
1224
- __decorate$h([
1224
+ __decorate$i([
1225
1225
  r$1()
1226
1226
  ], KRCodeDemo.prototype, "highlightedCode", void 0);
1227
- KRCodeDemo = __decorate$h([
1227
+ KRCodeDemo = __decorate$i([
1228
1228
  t$1('kr-code-demo')
1229
1229
  ], KRCodeDemo);
1230
1230
 
1231
- var __decorate$g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1231
+ var __decorate$h = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1232
1232
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1233
1233
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1234
1234
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -1397,10 +1397,10 @@ KRContextMenu.styles = i$5 `
1397
1397
  margin: 4px 0;
1398
1398
  }
1399
1399
  `;
1400
- __decorate$g([
1400
+ __decorate$h([
1401
1401
  r$1()
1402
1402
  ], KRContextMenu.prototype, "items", void 0);
1403
- KRContextMenu = __decorate$g([
1403
+ KRContextMenu = __decorate$h([
1404
1404
  t$1('kr-context-menu')
1405
1405
  ], KRContextMenu);
1406
1406
 
@@ -1410,7 +1410,7 @@ KRContextMenu = __decorate$g([
1410
1410
  * SPDX-License-Identifier: BSD-3-Clause
1411
1411
  */const n="important",i=" !"+n,o$1=e$2(class extends i$1{constructor(t$1){if(super(t$1),t$1.type!==t.ATTRIBUTE||"style"!==t$1.name||t$1.strings?.length>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(t){return Object.keys(t).reduce((e,r)=>{const s=t[r];return null==s?e:e+`${r=r.includes("-")?r:r.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${s};`},"")}update(e,[r]){const{style:s}=e.element;if(void 0===this.ft)return this.ft=new Set(Object.keys(r)),this.render(r);for(const t of this.ft)null==r[t]&&(this.ft.delete(t),t.includes("-")?s.removeProperty(t):s[t]=null);for(const t in r){const e=r[t];if(null!=e){this.ft.add(t);const r="string"==typeof e&&e.endsWith(i);t.includes("-")||r?s.setProperty(t,r?e.slice(0,-11):e,r?n:""):s[t]=e;}}return E}});
1412
1412
 
1413
- var __decorate$f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1413
+ var __decorate$g = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1414
1414
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1415
1415
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1416
1416
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -1437,7 +1437,7 @@ KRDialogHeader.styles = i$5 `
1437
1437
  font-weight: 600;
1438
1438
  }
1439
1439
  `;
1440
- KRDialogHeader = __decorate$f([
1440
+ KRDialogHeader = __decorate$g([
1441
1441
  t$1('kr-dialog-header')
1442
1442
  ], KRDialogHeader);
1443
1443
  let KRDialogContent = class KRDialogContent extends i$2 {
@@ -1453,7 +1453,7 @@ KRDialogContent.styles = i$5 `
1453
1453
  flex: 1 1 auto;
1454
1454
  }
1455
1455
  `;
1456
- KRDialogContent = __decorate$f([
1456
+ KRDialogContent = __decorate$g([
1457
1457
  t$1('kr-dialog-content')
1458
1458
  ], KRDialogContent);
1459
1459
  let KRDialogFooter = class KRDialogFooter extends i$2 {
@@ -1473,7 +1473,7 @@ KRDialogFooter.styles = i$5 `
1473
1473
  justify-content: flex-end;
1474
1474
  }
1475
1475
  `;
1476
- KRDialogFooter = __decorate$f([
1476
+ KRDialogFooter = __decorate$g([
1477
1477
  t$1('kr-dialog-footer')
1478
1478
  ], KRDialogFooter);
1479
1479
  /**
@@ -1681,22 +1681,582 @@ KRDialog.styles = i$5 `
1681
1681
  font-weight: 600;
1682
1682
  }
1683
1683
  `;
1684
- __decorate$f([
1684
+ __decorate$g([
1685
1685
  r$1()
1686
1686
  ], KRDialog.prototype, "_contentElement", void 0);
1687
- __decorate$f([
1687
+ __decorate$g([
1688
1688
  n$1({ type: Boolean, reflect: true })
1689
1689
  ], KRDialog.prototype, "opened", void 0);
1690
- __decorate$f([
1690
+ __decorate$g([
1691
1691
  n$1({ type: String })
1692
1692
  ], KRDialog.prototype, "label", void 0);
1693
- __decorate$f([
1693
+ __decorate$g([
1694
1694
  n$1({ type: String })
1695
1695
  ], KRDialog.prototype, "width", void 0);
1696
- KRDialog = __decorate$f([
1696
+ KRDialog = __decorate$g([
1697
1697
  t$1('kr-dialog')
1698
1698
  ], KRDialog);
1699
1699
 
1700
+ var __decorate$f = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1701
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1702
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1703
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1704
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1705
+ };
1706
+ /**
1707
+ * A date range picker component for selecting date ranges with relative and absolute options.
1708
+ *
1709
+ * @fires change - Fired when the date range selection changes
1710
+ * @csspart trigger - The trigger button element
1711
+ * @csspart dropdown - The dropdown container
1712
+ */
1713
+ let KRDateRangePicker = class KRDateRangePicker extends i$2 {
1714
+ constructor() {
1715
+ super(...arguments);
1716
+ /**
1717
+ * Relative date options to display
1718
+ */
1719
+ this.relativeOptions = [
1720
+ { key: 'last-5-minutes', amount: 5, unit: 'minute', type: 'relative' },
1721
+ { key: 'last-30-minutes', amount: 30, unit: 'minute', type: 'relative' },
1722
+ { key: 'last-1-hour', amount: 1, unit: 'hour', type: 'relative' },
1723
+ { key: 'last-6-hours', amount: 6, unit: 'hour', type: 'relative' },
1724
+ { key: 'last-1-day', amount: 1, unit: 'day', type: 'relative' },
1725
+ { key: 'last-7-days', amount: 7, unit: 'day', type: 'relative' },
1726
+ { key: 'last-30-days', amount: 30, unit: 'day', type: 'relative' },
1727
+ ];
1728
+ /**
1729
+ * Whether the picker is disabled
1730
+ */
1731
+ this.disabled = false;
1732
+ /**
1733
+ * Whether the picker is in an invalid state
1734
+ */
1735
+ this.invalid = false;
1736
+ /**
1737
+ * Placeholder text when no range is selected
1738
+ */
1739
+ this.placeholder = 'Select a date range';
1740
+ /**
1741
+ * Initial start date for absolute mode (YYYY-MM-DD)
1742
+ */
1743
+ this.startDate = '';
1744
+ /**
1745
+ * Initial end date for absolute mode (YYYY-MM-DD)
1746
+ */
1747
+ this.endDate = '';
1748
+ this._isOpen = false;
1749
+ this._activeTab = 'relative';
1750
+ this._tempStartDate = '';
1751
+ this._tempEndDate = '';
1752
+ this._handleClickOutside = (e) => {
1753
+ if (!e.composedPath().includes(this)) {
1754
+ this._isOpen = false;
1755
+ }
1756
+ };
1757
+ }
1758
+ connectedCallback() {
1759
+ super.connectedCallback();
1760
+ document.addEventListener('click', this._handleClickOutside);
1761
+ if (this.startDate)
1762
+ this._tempStartDate = this.startDate;
1763
+ if (this.endDate)
1764
+ this._tempEndDate = this.endDate;
1765
+ // Set initial active tab based on mode
1766
+ if (this.mode === 'relative') {
1767
+ this._activeTab = 'relative';
1768
+ }
1769
+ else if (this.mode === 'absolute') {
1770
+ this._activeTab = 'absolute';
1771
+ }
1772
+ }
1773
+ disconnectedCallback() {
1774
+ super.disconnectedCallback();
1775
+ document.removeEventListener('click', this._handleClickOutside);
1776
+ }
1777
+ _handleTriggerClick() {
1778
+ if (this.disabled)
1779
+ return;
1780
+ this._isOpen = !this._isOpen;
1781
+ }
1782
+ _handleTabClick(tab) {
1783
+ this._activeTab = tab;
1784
+ }
1785
+ _handleRelativeSelect(option) {
1786
+ this.value = {
1787
+ type: 'relative',
1788
+ amount: option.amount,
1789
+ unit: option.unit,
1790
+ };
1791
+ this._isOpen = false;
1792
+ this.dispatchEvent(new CustomEvent('change', {
1793
+ detail: { value: this.value },
1794
+ bubbles: true,
1795
+ composed: true,
1796
+ }));
1797
+ }
1798
+ _handleApplyAbsolute() {
1799
+ if (!this._tempStartDate) {
1800
+ return;
1801
+ }
1802
+ if (!this._tempEndDate) {
1803
+ return;
1804
+ }
1805
+ if (this._tempStartDate >= this._tempEndDate) {
1806
+ return;
1807
+ }
1808
+ this.value = {
1809
+ type: 'absolute',
1810
+ startDate: this._tempStartDate,
1811
+ endDate: this._tempEndDate,
1812
+ };
1813
+ this.startDate = this._tempStartDate;
1814
+ this.endDate = this._tempEndDate;
1815
+ this._isOpen = false;
1816
+ this.dispatchEvent(new CustomEvent('change', {
1817
+ detail: { value: this.value },
1818
+ bubbles: true,
1819
+ composed: true,
1820
+ }));
1821
+ }
1822
+ _handleCancel() {
1823
+ this._isOpen = false;
1824
+ this._tempStartDate = this.startDate;
1825
+ this._tempEndDate = this.endDate;
1826
+ }
1827
+ _formatRelativeOption(option) {
1828
+ if (option.amount === 0) {
1829
+ if (option.unit === 'day') {
1830
+ return 'Today';
1831
+ }
1832
+ return `This ${option.unit}`;
1833
+ }
1834
+ const unitLabels = {
1835
+ second: option.amount === 1 ? 'second' : 'seconds',
1836
+ minute: option.amount === 1 ? 'minute' : 'minutes',
1837
+ hour: option.amount === 1 ? 'hour' : 'hours',
1838
+ day: option.amount === 1 ? 'day' : 'days',
1839
+ week: option.amount === 1 ? 'week' : 'weeks',
1840
+ month: option.amount === 1 ? 'month' : 'months',
1841
+ year: option.amount === 1 ? 'year' : 'years',
1842
+ };
1843
+ return `Last ${option.amount} ${unitLabels[option.unit]}`;
1844
+ }
1845
+ _getDisplayValue() {
1846
+ if (!this.value)
1847
+ return '';
1848
+ if (this.value.type === 'relative' && this.value.amount !== undefined && this.value.unit) {
1849
+ return this._formatRelativeOption({
1850
+ key: '',
1851
+ amount: this.value.amount,
1852
+ unit: this.value.unit,
1853
+ type: 'relative',
1854
+ });
1855
+ }
1856
+ if (this.value.type === 'absolute' && this.value.startDate && this.value.endDate) {
1857
+ return `${this.value.startDate} - ${this.value.endDate}`;
1858
+ }
1859
+ return '';
1860
+ }
1861
+ _renderTriggerText() {
1862
+ const displayValue = this._getDisplayValue();
1863
+ if (displayValue) {
1864
+ return b `${displayValue}`;
1865
+ }
1866
+ return b `<span class="trigger-placeholder">${this.placeholder}</span>`;
1867
+ }
1868
+ _renderContent() {
1869
+ if (this.mode === 'relative') {
1870
+ return this._renderRelativeContent();
1871
+ }
1872
+ if (this.mode === 'absolute') {
1873
+ return this._renderAbsoluteContent();
1874
+ }
1875
+ if (this._activeTab === 'relative') {
1876
+ return this._renderRelativeContent();
1877
+ }
1878
+ return this._renderAbsoluteContent();
1879
+ }
1880
+ _renderRelativeContent() {
1881
+ return b `
1882
+ <div class="relative-options">
1883
+ ${this.relativeOptions.map((option) => b `
1884
+ <button
1885
+ class=${e$1({
1886
+ 'relative-option': true,
1887
+ 'relative-option--selected': this.value?.type === 'relative' &&
1888
+ this.value?.amount === option.amount &&
1889
+ this.value?.unit === option.unit
1890
+ })}
1891
+ type="button"
1892
+ @click=${() => this._handleRelativeSelect(option)}
1893
+ >
1894
+ ${this._formatRelativeOption(option)}
1895
+ </button>
1896
+ `)}
1897
+ </div>
1898
+ `;
1899
+ }
1900
+ _renderAbsoluteContent() {
1901
+ return b `
1902
+ <div class="absolute">
1903
+ <div class="date-row">
1904
+ <span class="date-label">Start</span>
1905
+ <input
1906
+ class="date-input"
1907
+ type="date"
1908
+ .value=${this._tempStartDate}
1909
+ @change=${this._handleStartDateChange}
1910
+ />
1911
+ </div>
1912
+ <div class="date-row">
1913
+ <span class="date-label">End</span>
1914
+ <input
1915
+ class="date-input"
1916
+ type="date"
1917
+ .value=${this._tempEndDate}
1918
+ @change=${this._handleEndDateChange}
1919
+ />
1920
+ </div>
1921
+ </div>
1922
+ `;
1923
+ }
1924
+ _renderFooter() {
1925
+ if (this.mode === 'absolute') {
1926
+ return b `
1927
+ <div class="footer">
1928
+ <kr-button variant="outline" size="small" @click=${this._handleCancel}>
1929
+ Cancel
1930
+ </kr-button>
1931
+ <kr-button
1932
+ variant="primary"
1933
+ size="small"
1934
+ ?disabled=${!this._tempStartDate || !this._tempEndDate}
1935
+ @click=${this._handleApplyAbsolute}
1936
+ >
1937
+ Apply
1938
+ </kr-button>
1939
+ </div>
1940
+ `;
1941
+ }
1942
+ if (this.mode === 'relative') {
1943
+ return A;
1944
+ }
1945
+ if (this._activeTab === 'absolute') {
1946
+ return b `
1947
+ <div class="footer">
1948
+ <kr-button variant="outline" size="small" @click=${this._handleCancel}>
1949
+ Cancel
1950
+ </kr-button>
1951
+ <kr-button
1952
+ variant="primary"
1953
+ size="small"
1954
+ ?disabled=${!this._tempStartDate || !this._tempEndDate}
1955
+ @click=${this._handleApplyAbsolute}
1956
+ >
1957
+ Apply
1958
+ </kr-button>
1959
+ </div>
1960
+ `;
1961
+ }
1962
+ return A;
1963
+ }
1964
+ _handleStartDateChange(e) {
1965
+ this._tempStartDate = e.target.value;
1966
+ }
1967
+ _handleEndDateChange(e) {
1968
+ this._tempEndDate = e.target.value;
1969
+ }
1970
+ render() {
1971
+ return b `
1972
+ <button
1973
+ part="trigger"
1974
+ class=${e$1({
1975
+ 'trigger': true,
1976
+ 'trigger--invalid': this.invalid
1977
+ })}
1978
+ type="button"
1979
+ ?disabled=${this.disabled}
1980
+ @click=${this._handleTriggerClick}
1981
+ >
1982
+ <svg class="icon" fill="none" viewBox="0 0 24 24" stroke="currentColor">
1983
+ <path
1984
+ stroke-linecap="round"
1985
+ stroke-linejoin="round"
1986
+ stroke-width="2"
1987
+ d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"
1988
+ />
1989
+ </svg>
1990
+ <span class="trigger-text">
1991
+ ${this._renderTriggerText()}
1992
+ </span>
1993
+ <svg class="icon" fill="none" viewBox="0 0 24 24" stroke="currentColor">
1994
+ <path
1995
+ stroke-linecap="round"
1996
+ stroke-linejoin="round"
1997
+ stroke-width="2"
1998
+ d="M19 9l-7 7-7-7"
1999
+ />
2000
+ </svg>
2001
+ </button>
2002
+
2003
+ <div part="dropdown" class=${e$1({
2004
+ 'dropdown': true,
2005
+ 'dropdown--open': this._isOpen
2006
+ })}>
2007
+ ${!this.mode ? b `
2008
+ <div class="tabs">
2009
+ <button
2010
+ class=${e$1({
2011
+ 'tab': true,
2012
+ 'tab--active': this._activeTab === 'relative'
2013
+ })}
2014
+ type="button"
2015
+ @click=${() => this._handleTabClick('relative')}
2016
+ >
2017
+ Relative
2018
+ </button>
2019
+ <button
2020
+ class=${e$1({
2021
+ 'tab': true,
2022
+ 'tab--active': this._activeTab === 'absolute'
2023
+ })}
2024
+ type="button"
2025
+ @click=${() => this._handleTabClick('absolute')}
2026
+ >
2027
+ Absolute
2028
+ </button>
2029
+ </div>
2030
+ ` : A}
2031
+
2032
+ <div class="content">
2033
+ ${this._renderContent()}
2034
+ </div>
2035
+
2036
+ ${this._renderFooter()}
2037
+ </div>
2038
+ `;
2039
+ }
2040
+ };
2041
+ KRDateRangePicker.styles = i$5 `
2042
+ :host {
2043
+ display: inline-block;
2044
+ position: relative;
2045
+ font-family: inherit;
2046
+ }
2047
+
2048
+ .trigger {
2049
+ display: inline-flex;
2050
+ align-items: center;
2051
+ gap: 0.5rem;
2052
+ min-width: 250px;
2053
+ padding: 0.5rem 0.75rem;
2054
+ font-size: 14px;
2055
+ font-family: inherit;
2056
+ color: #111827;
2057
+ background-color: #fff;
2058
+ border: 1px solid #d1d5db;
2059
+ border-radius: 4px;
2060
+ cursor: pointer;
2061
+ transition: border-color 0.2s, box-shadow 0.2s;
2062
+ text-align: left;
2063
+ }
2064
+
2065
+ .trigger:hover:not(:disabled) {
2066
+ border-color: #9ca3af;
2067
+ }
2068
+
2069
+ .trigger:focus {
2070
+ outline: none;
2071
+ border-color: #2563eb;
2072
+ box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
2073
+ }
2074
+
2075
+ .trigger:disabled {
2076
+ background-color: #f3f4f6;
2077
+ color: #9ca3af;
2078
+ cursor: not-allowed;
2079
+ }
2080
+
2081
+ .trigger--invalid {
2082
+ border-color: #ef4444;
2083
+ }
2084
+
2085
+ .trigger-text {
2086
+ flex: 1;
2087
+ }
2088
+
2089
+ .trigger-placeholder {
2090
+ color: #9ca3af;
2091
+ }
2092
+
2093
+ .icon {
2094
+ width: 16px;
2095
+ height: 16px;
2096
+ color: #6b7280;
2097
+ flex-shrink: 0;
2098
+ }
2099
+
2100
+ .dropdown {
2101
+ position: absolute;
2102
+ top: calc(100% + 4px);
2103
+ left: 0;
2104
+ z-index: 1000;
2105
+ min-width: 320px;
2106
+ background-color: #fff;
2107
+ border: 1px solid #d1d5db;
2108
+ border-radius: 8px;
2109
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
2110
+ display: none;
2111
+ }
2112
+
2113
+ .dropdown--open {
2114
+ display: block;
2115
+ }
2116
+
2117
+ .tabs {
2118
+ display: flex;
2119
+ border-bottom: 1px solid #e5e7eb;
2120
+ }
2121
+
2122
+ .tab {
2123
+ flex: 1;
2124
+ padding: 0.75rem;
2125
+ font-size: 14px;
2126
+ font-weight: 500;
2127
+ font-family: inherit;
2128
+ color: #6b7280;
2129
+ background: none;
2130
+ border: none;
2131
+ border-bottom: 2px solid transparent;
2132
+ cursor: pointer;
2133
+ transition: color 0.2s;
2134
+ }
2135
+
2136
+ .tab:hover {
2137
+ color: #111827;
2138
+ }
2139
+
2140
+ .tab--active {
2141
+ color: #2563eb;
2142
+ border-bottom-color: #2563eb;
2143
+ }
2144
+
2145
+ .content {
2146
+ padding: 1rem;
2147
+ }
2148
+
2149
+ .relative-options {
2150
+ display: flex;
2151
+ flex-direction: column;
2152
+ gap: 0.25rem;
2153
+ }
2154
+
2155
+ .relative-option {
2156
+ display: flex;
2157
+ align-items: center;
2158
+ padding: 0.5rem 0.75rem;
2159
+ font-size: 14px;
2160
+ font-family: inherit;
2161
+ color: #111827;
2162
+ background: none;
2163
+ border: none;
2164
+ border-radius: 4px;
2165
+ cursor: pointer;
2166
+ text-align: left;
2167
+ transition: background-color 0.2s;
2168
+ }
2169
+
2170
+ .relative-option:hover {
2171
+ background-color: #f3f4f6;
2172
+ }
2173
+
2174
+ .relative-option--selected {
2175
+ background-color: #eff6ff;
2176
+ color: #1e40af;
2177
+ }
2178
+
2179
+ .absolute {
2180
+ display: flex;
2181
+ flex-direction: column;
2182
+ gap: 1rem;
2183
+ }
2184
+
2185
+ .date-row {
2186
+ display: flex;
2187
+ align-items: center;
2188
+ gap: 0.75rem;
2189
+ }
2190
+
2191
+ .date-label {
2192
+ width: 60px;
2193
+ font-size: 14px;
2194
+ color: #6b7280;
2195
+ }
2196
+
2197
+ .date-input {
2198
+ flex: 1;
2199
+ padding: 0.5rem 0.75rem;
2200
+ font-size: 14px;
2201
+ font-family: inherit;
2202
+ border: 1px solid #d1d5db;
2203
+ border-radius: 4px;
2204
+ }
2205
+
2206
+ .date-input:focus {
2207
+ outline: none;
2208
+ border-color: #2563eb;
2209
+ box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
2210
+ }
2211
+
2212
+ .footer {
2213
+ display: flex;
2214
+ justify-content: flex-end;
2215
+ gap: 0.5rem;
2216
+ padding: 0.75rem 1rem;
2217
+ border-top: 1px solid #e5e7eb;
2218
+ }
2219
+ `;
2220
+ __decorate$f([
2221
+ n$1({ type: Object })
2222
+ ], KRDateRangePicker.prototype, "value", void 0);
2223
+ __decorate$f([
2224
+ n$1({ type: Array })
2225
+ ], KRDateRangePicker.prototype, "relativeOptions", void 0);
2226
+ __decorate$f([
2227
+ n$1({ type: Boolean })
2228
+ ], KRDateRangePicker.prototype, "disabled", void 0);
2229
+ __decorate$f([
2230
+ n$1({ type: Boolean })
2231
+ ], KRDateRangePicker.prototype, "invalid", void 0);
2232
+ __decorate$f([
2233
+ n$1({ type: String })
2234
+ ], KRDateRangePicker.prototype, "placeholder", void 0);
2235
+ __decorate$f([
2236
+ n$1({ type: String })
2237
+ ], KRDateRangePicker.prototype, "startDate", void 0);
2238
+ __decorate$f([
2239
+ n$1({ type: String })
2240
+ ], KRDateRangePicker.prototype, "endDate", void 0);
2241
+ __decorate$f([
2242
+ n$1({ type: String })
2243
+ ], KRDateRangePicker.prototype, "mode", void 0);
2244
+ __decorate$f([
2245
+ r$1()
2246
+ ], KRDateRangePicker.prototype, "_isOpen", void 0);
2247
+ __decorate$f([
2248
+ r$1()
2249
+ ], KRDateRangePicker.prototype, "_activeTab", void 0);
2250
+ __decorate$f([
2251
+ r$1()
2252
+ ], KRDateRangePicker.prototype, "_tempStartDate", void 0);
2253
+ __decorate$f([
2254
+ r$1()
2255
+ ], KRDateRangePicker.prototype, "_tempEndDate", void 0);
2256
+ KRDateRangePicker = __decorate$f([
2257
+ t$1('kr-date-range-picker')
2258
+ ], KRDateRangePicker);
2259
+
1700
2260
  var __decorate$e = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1701
2261
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1702
2262
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -6041,7 +6601,7 @@ KRTable.styles = [krBaseCSS, i$5 `
6041
6601
  display: flex;
6042
6602
  align-items: center;
6043
6603
  background: #fff;
6044
- border-bottom: 1px solid #e5e7ebba;
6604
+ border-bottom: 1px solid #d1d5db;
6045
6605
  border-right: 1px solid #e5e7ebba;
6046
6606
  box-sizing: border-box;
6047
6607
  box-shadow: inset 0 0 0 0 #163052;
@@ -9304,5 +9864,5 @@ KRComboBox = __decorate([
9304
9864
  t$1('kr-combo-box')
9305
9865
  ], KRComboBox);
9306
9866
 
9307
- export { KRAccordion, KRAlert, KRAutoSuggest, KRButton, KRCodeDemo, KRComboBox, KRContextMenu, KRDialog, KRDialogRef, KRFileList, KRFilePreview, KRProgressBar, KRQuery, KRSelectField, KRSelectOption, KRSnackbar, KRSpinner, KRTab, KRTabGroup, KRTable, KRTextField, KRTextareaField, KR_OPERATORS, getOperatorsForType, krBaseCSS };
9867
+ export { KRAccordion, KRAlert, KRAutoSuggest, KRButton, KRCodeDemo, KRComboBox, KRContextMenu, KRDateRangePicker, KRDialog, KRDialogRef, KRFileList, KRFilePreview, KRProgressBar, KRQuery, KRSelectField, KRSelectOption, KRSnackbar, KRSpinner, KRTab, KRTabGroup, KRTable, KRTextField, KRTextareaField, KR_OPERATORS, getOperatorsForType, krBaseCSS };
9308
9868
  //# sourceMappingURL=krubble-components.bundled.js.map