@logosphere-ui/core 0.0.0-alpha.53 → 0.0.0-alpha.55

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/AGENTS.md CHANGED
@@ -263,7 +263,6 @@ Metin girişi; maske, parola, temizle ve tüm formfield özellikleri.
263
263
  | `required` | `boolean` | `false` | Zorunlu |
264
264
  | `disabled` | `boolean` | `false` | Devre dışı |
265
265
  | `readonly` | `boolean` | `false` | Salt okunur |
266
- | `pickOnly` | `boolean` | `false` | "Seç-yalnızca" modu (attribute: `pick-only`). Klavyeyle değer girilemez/düzenlenemez ama koddan (`.value`/attribute) atanabilir; temizle (X) butonu aktif kalır. Değeri modal/seçici ile dolduran alanlar için. `readonly`'den farkı: readonly X'i de gizler |
267
266
  | `size` | `"default" \| "large"` | `"default"` | Boyut |
268
267
  | `variant` | `"default" \| "subtle"` | `"default"` | Stil |
269
268
  | `minlength` | `number` | — | Min karakter |
@@ -713,6 +712,122 @@ Yan panel; sağdan veya soldan açılır.
713
712
 
714
713
  ---
715
714
 
715
+ ### `<logosphere-table>`
716
+
717
+ Data-driven tablo. Sütun genişlikleri sabittir (varsayılan 160px); toplam genişlik kapsayıcıdan büyükse bileşen kendi sınırları içinde yatay kayar (taşma olmaz). Native HTML `<table>` değil, flex tabanlı div grid kullanır. Sort, search ve selection state'i (dahili) component içinde tutulur; gerçek sıralama/filtreleme/veri değişikliği tüketici tarafında callback'ler üzerinden yapılır (component veriyi kendisi sıralamaz/filtrelemez).
718
+
719
+ `columns` her değiştiğinde (yeni referans/eleman) hem header hem body hücreleri `column.key` ile keyed `repeat()` kullanır — `rows` için zaten kullanılan aynı desen — böylece kolon ekleme/silme/reorder'da lit-html DOM node'larını index'e göre değil kimliğe göre eşleştirir (gereksiz DOM yeniden yazımı olmaz). Ayrıca `columns` değiştiğinde artık var olmayan kolon key'lerine bağlı dahili state (resize genişlikleri, aktif sort, search metni) `willUpdate()` içinde otomatik temizlenir; bu, hem küçük bir memory leak'i hem de bir key'in sonradan farklı bir kolon için yeniden kullanılması durumunda eski değerlerin (örn. resize genişliği) o kolona sessizce sızmasını önler.
720
+
721
+ **Properties**
722
+
723
+ | Property | Tip | Varsayılan | Açıklama |
724
+ |----------|-----|-----------|---------|
725
+ | `columns` | `TableColumn[]` | `[]` | Sütun tanımları (attribute değil) |
726
+ | `actionColumn` | `TableActionColumn` | — | Header'sız, sağda sabit bir aksiyon kolonu (attribute değil) |
727
+ | `rows` | `Record<string, unknown>[]` | `[]` | Satır verisi (attribute değil) |
728
+ | `rowKey` (`row-key`) | `string` | `"id"` | Satırları anahtarlamak için kullanılan alan (keyed render + selection key) |
729
+ | `emptyMessage` (`empty-message`) | `string` | `"Kayıt bulunamadı"` | Satır yoksa gösterilecek mesaj |
730
+ | `maxHeight` (`max-height`) | `number` | — | Verilirse dikey scroll aktif olur (header zaten her zaman `position: sticky; top: 0`) |
731
+ | `selection` | `boolean` | `false` | İlk kolonda checkbox ile satır seçimini aktifleştirir |
732
+ | `stickySelection` (`sticky-selection`) | `boolean` | `false` | `selection` aktifken checkbox kolonunu da sticky kolonların en soluna sabitler (aksi halde sticky data kolonları olsa dahi checkbox otomatik sabitlenmez) |
733
+ | `resizable` | `boolean` | `false` | Sütunlar arasında border gösterir ve header'ın sağ kenarından sürükleyerek sütun genişliğini değiştirmeyi aktifleştirir |
734
+ | `onRowClick` | `(row, rowIndex) => void` | — | Satır tıklama callback'i (attribute değil) |
735
+ | `onSortChange` | `(detail: TableSortChangeDetail) => void` | — | `sortable: true` olan bir header'a tıklandığında çağrılır (attribute değil) |
736
+ | `onSelectChange` | `(detail: TableSelectionChangeDetail) => void` | — | Selection değiştiğinde çağrılır (attribute değil) |
737
+ | `onSearch` | `(detail: TableSearchChangeDetail) => void` | — | `searchable: true` olan bir header'ın input'una yazıldığında 300ms debounce ile çağrılır (attribute değil) |
738
+ | `onWidthChange` | `(detail: TableWidthChangeDetail) => void` | — | `resizable: true` iken bir sütunun sürükleme ile resize'ı bittiğinde çağrılır (attribute değil) |
739
+
740
+ **`TableColumn`**
741
+
742
+ ```ts
743
+ interface TableColumn {
744
+ key: string;
745
+ label: string;
746
+ width?: number; // px, varsayılan 160
747
+ align?: "left" | "center" | "right";
748
+ sortable?: boolean; // onSortChange verilmezse console.warn ile uyarır
749
+ searchable?: boolean; // header altına search input ekler; onSearch verilmezse console.warn ile uyarır
750
+ sticky?: boolean; // kolonu (ve header'ını) yatay scroll'da sabitler (pinned/frozen)
751
+ render?: (context: TableCellContext) => unknown; // string veya TemplateResult
752
+ }
753
+
754
+ interface TableCellContext {
755
+ value: unknown;
756
+ row: Record<string, unknown>;
757
+ rowIndex: number;
758
+ column: TableColumn;
759
+ }
760
+
761
+ interface TableActionColumn {
762
+ width?: number; // px, varsayılan 96
763
+ render: (context: { row: Record<string, unknown>; rowIndex: number }) => unknown;
764
+ }
765
+ ```
766
+
767
+ **Sticky (pinned) kolonlar**
768
+
769
+ Bir veya daha fazla kolona `sticky: true` verildiğinde, o kolon(lar) ve header'ları tablo yatay kaydırılırken görünür kalacak şekilde sabitlenir. Sticky kolonlar `columns` dizisindeki sırayla soldan sağa yan yana konumlanır (offset, kendisinden önceki sticky kolonların toplam genişliğidir — aralarında sticky olmayan bir kolon olsa da hesap sadece sticky olanları sayar). Checkbox selection kolonu **otomatik olarak sabitlenmez**; sadece tabloya `stickySelection` (`sticky-selection`) verilirse checkbox kolonu da sticky kolonların en soluna eklenir — bu durumda `stickySelection` tek başına (hiçbir data kolonu sticky olmasa da) checkbox'ı sabitleyebilir. Sabitlenmiş bloğun **sadece en son (en sağdaki) hücresinde** ince bir ayraç gölgesi (`box-shadow`) gösterilir — sticky kolonlar birbirine bitişik olmasa bile (araya sticky olmayan bir kolon girse bile) gölge tek bir yerde, en sondaki sticky hücrede çıkar; birden fazla gölge oluşmaz. `actionColumn` şu an sticky desteklemiyor (her zaman sağda, tablo ile birlikte scroll olur).
770
+
771
+ ```ts
772
+ const columns: TableColumn[] = [
773
+ { key: "stokNo", label: "Stok No.", sticky: true, width: 140 },
774
+ { key: "stokAdi", label: "Stok Adı" },
775
+ // ...
776
+ ];
777
+ ```
778
+
779
+ ```html
780
+ <!-- selection kolonu, sticky kolonların en soluna sabitlenir -->
781
+ <logosphere-table selection sticky-selection .columns=${columns} .rows=${rows}></logosphere-table>
782
+ ```
783
+
784
+ **Sütun genişliğini sürükleyerek değiştirme (resizable)**
785
+
786
+ Tabloya `resizable` verildiğinde her data kolonunun (selection ve `actionColumn` hariç) sağında bir border belirir ve header hücresinin sağ kenarında sürüklenebilir bir handle oluşur (pointer events ile, mouse + touch). Sürükleme sırasında genişlik component içinde tutulan dahili state (`columnWidths`) üzerinden anlık güncellenir — `column.width` değeri değişmez, sadece o kolon için geçici bir override uygulanır. Sürükleme bittiğinde (`pointerup`/`pointercancel`) `onWidthChange` callback'i ve `width-change` event'i `{ column, key, width }` detail'i ile bir kez tetiklenir. Genişlik `60px`'in altına düşürülemez (`MIN_COLUMN_WIDTH`).
787
+
788
+ ```html
789
+ <logosphere-table
790
+ resizable
791
+ .columns=${columns}
792
+ .rows=${rows}
793
+ .onWidthChange=${({ column, key, width }) => console.log(key, width)}
794
+ ></logosphere-table>
795
+ ```
796
+
797
+ **Events**
798
+
799
+ | Event | `detail` |
800
+ |-------|---------|
801
+ | `row-click` | `{ row, rowIndex }` |
802
+ | `sort-change` | `TableSortChangeDetail` → `{ column, key, direction: "asc" \| "desc" }` |
803
+ | `select-change` | `TableSelectionChangeDetail` → `{ selectedRows, selectedKeys }` |
804
+ | `search-change` | `TableSearchChangeDetail` → `{ values: { key, value }[] }` (yalnızca boş olmayan search alanları) |
805
+ | `width-change` | `TableWidthChangeDetail` → `{ column, key, width }` (sürükleme ile resize bittiğinde) |
806
+
807
+ ```html
808
+ <logosphere-table
809
+ .columns=${[
810
+ { key: "stokNo", label: "Stok No.", sticky: true, sortable: true },
811
+ { key: "stokAdi", label: "Stok Adı", searchable: true },
812
+ {
813
+ key: "durum",
814
+ label: "Durum",
815
+ width: 140,
816
+ render: ({ value }) => html`<logosphere-badge text=${value} variant=${value === "Aktif" ? "success" : "danger"}></logosphere-badge>`
817
+ },
818
+ ]}
819
+ .rows=${rows}
820
+ row-key="id"
821
+ selection
822
+ .onSortChange=${(detail) => console.log(detail)}
823
+ .onSearch=${(detail) => console.log(detail)}
824
+ .onSelectChange=${(detail) => console.log(detail)}
825
+ @row-click=${(e) => console.log(e.detail)}
826
+ ></logosphere-table>
827
+ ```
828
+
829
+ ---
830
+
716
831
  ### `<logosphere-toast>` ve `ToastService`
717
832
 
718
833
  Bildirim mesajı. Genellikle doğrudan kullanmak yerine `ToastService` kullanılır.
@@ -1146,6 +1261,45 @@ SVG ikon bileşeni. `icon-map.ts`'deki kayıtlı ikonları isimle render eder.
1146
1261
 
1147
1262
  ---
1148
1263
 
1264
+ ## Tam Component Katalogu
1265
+
1266
+ Core paketindeki tum Web Component'ler ve en sik kullanimlari:
1267
+
1268
+ | Web Component | Import | Kullanim |
1269
+ |---------------|--------|----------|
1270
+ | `<logosphere-accordion>` | `@logosphere-ui/core/accordion` | Coklu collapse gruplari: `<logosphere-accordion .items=${items} multiple></logosphere-accordion>` |
1271
+ | `<logosphere-badge>` | `@logosphere-ui/core/badge` | Durum etiketi: `<logosphere-badge variant="success">Aktif</logosphere-badge>` |
1272
+ | `<logosphere-breadcrumb>` | `@logosphere-ui/core/breadcrumb` | Sayfa yolu: `<logosphere-breadcrumb .items=${items}></logosphere-breadcrumb>` |
1273
+ | `<logosphere-button>` | `@logosphere-ui/core/button` | Aksiyon: `<logosphere-button theme="primary">Kaydet</logosphere-button>` |
1274
+ | `<logosphere-calendar>` | `@logosphere-ui/core/calendar` | Takvim: `<logosphere-calendar .value=${date}></logosphere-calendar>` |
1275
+ | `<logosphere-card>` | `@logosphere-ui/core/card` | Panel/ozet: `<logosphere-card title="Ozet">...</logosphere-card>` |
1276
+ | `<logosphere-chatbot>` | `@logosphere-ui/core/chatbot` | Yardim paneli: `<logosphere-chatbot question-prompt="Sorunuzu yazin"></logosphere-chatbot>` |
1277
+ | `<logosphere-checkbox>` | `@logosphere-ui/core/checkbox` | Onay/radio/switch: `<logosphere-checkbox checked label="Aktif"></logosphere-checkbox>` |
1278
+ | `<logosphere-chip-group>` | `@logosphere-ui/core/chip-group` | Filtre chipleri: `<logosphere-chip-group .items=${items} .value=${value}></logosphere-chip-group>` |
1279
+ | `<logosphere-collapse>` | `@logosphere-ui/core/collapse` | Tek acilir panel: `<logosphere-collapse title="Detaylar">...</logosphere-collapse>` |
1280
+ | `<logosphere-combobox>` | `@logosphere-ui/core/combobox` | Select/autocomplete: `<logosphere-combobox .items=${items} multiple></logosphere-combobox>` |
1281
+ | `<logosphere-datepicker>` | `@logosphere-ui/core/datepicker` | Tarih secimi: `<logosphere-datepicker value="2026-07-21"></logosphere-datepicker>` |
1282
+ | `<download-manager>` | `@logosphere-ui/core/download-manager` | Indirme yoneticisi: `<download-manager maxConcurrentDownloads="3" maxConcurrentChunks="4"></download-manager>` |
1283
+ | `<logosphere-drawer>` | `@logosphere-ui/core/drawer` | Detay paneli: `<logosphere-drawer open title="Detay">...</logosphere-drawer>` |
1284
+ | `<logosphere-formfield>` | `@logosphere-ui/core/formfield` | Label/helper/error sarmalayici: `<logosphere-formfield label="Ad">...</logosphere-formfield>` |
1285
+ | `<ui-icon>` | `@logosphere-ui/core/icon` | Ikon: `<ui-icon name="uil-search" size="16"></ui-icon>` |
1286
+ | `<logosphere-input>` | `@logosphere-ui/core/input` | Metin/arama/maskeli alan: `<logosphere-input placeholder="Ara"></logosphere-input>` |
1287
+ | `<logosphere-input-group>` | `@logosphere-ui/core/input-group` | Bitişik form alanlari: `<logosphere-input-group>...</logosphere-input-group>` |
1288
+ | `<logosphere-leftmenu>` | `@logosphere-ui/core/left-menu` | Sol menu: `<logosphere-leftmenu .items=${items} open></logosphere-leftmenu>` |
1289
+ | `<logosphere-modal>` | `@logosphere-ui/core/modal` | Dialog/confirm: `<logosphere-modal open title="Onay">...</logosphere-modal>` |
1290
+ | `<logosphere-pagination>` | `@logosphere-ui/core/pagination` | Sayfalama: `<logosphere-pagination page="1" total="120"></logosphere-pagination>` |
1291
+ | `<logosphere-popover>` | `@logosphere-ui/core/popover` | Hover/click popup: `<logosphere-popover trigger="hover">...</logosphere-popover>` |
1292
+ | `<logosphere-slider>` | `@logosphere-ui/core/slider` | Tek/range slider: `<logosphere-slider value="50"></logosphere-slider>` |
1293
+ | `<logosphere-split-button>` | `@logosphere-ui/core/split-button` | Ana aksiyon + dropdown: `<logosphere-split-button label="Kaydet" .items=${items}></logosphere-split-button>` |
1294
+ | `<logosphere-stepper>` | `@logosphere-ui/core/stepper` | Surec adimlari: `<logosphere-stepper .steps=${steps} activeStep="1"></logosphere-stepper>` |
1295
+ | `<logosphere-switch>` | `@logosphere-ui/core/switch` | Toggle: `<logosphere-switch checked></logosphere-switch>` |
1296
+ | `<logosphere-tab>` | `@logosphere-ui/core/tab` | Sekmeler: `<logosphere-tab .items=${tabs}></logosphere-tab>` |
1297
+ | `<logosphere-table>` | `@logosphere-ui/core/table` | Veri tablosu: `<logosphere-table .columns=${columns} .rows=${rows} selection borderless></logosphere-table>` |
1298
+ | `<logosphere-textarea>` | `@logosphere-ui/core/textarea` | Cok satirli metin: `<logosphere-textarea value="Not"></logosphere-textarea>` |
1299
+ | `<logosphere-timepicker>` | `@logosphere-ui/core/timepicker` | Saat secimi: `<logosphere-timepicker value="09:30"></logosphere-timepicker>` |
1300
+ | `<logosphere-toast>` / `<logosphere-toast-container>` | `@logosphere-ui/core/toast` | Bildirim: `<logosphere-toast-container></logosphere-toast-container>` |
1301
+ | `<logosphere-tree-menu>` | `@logosphere-ui/core/tree-menu` | Agac menu: `<logosphere-tree-menu .items=${items}></logosphere-tree-menu>` |
1302
+
1149
1303
  ## Design Tokens (CSS Değişkenleri)
1150
1304
 
1151
1305
  Bileşenler bu token'ları kullanır; tema özelleştirmek için `:root` üzerinde override et.
package/dist/AGENTS.md CHANGED
@@ -263,7 +263,6 @@ Metin girişi; maske, parola, temizle ve tüm formfield özellikleri.
263
263
  | `required` | `boolean` | `false` | Zorunlu |
264
264
  | `disabled` | `boolean` | `false` | Devre dışı |
265
265
  | `readonly` | `boolean` | `false` | Salt okunur |
266
- | `pickOnly` | `boolean` | `false` | "Seç-yalnızca" modu (attribute: `pick-only`). Klavyeyle değer girilemez/düzenlenemez ama koddan (`.value`/attribute) atanabilir; temizle (X) butonu aktif kalır. Değeri modal/seçici ile dolduran alanlar için. `readonly`'den farkı: readonly X'i de gizler |
267
266
  | `size` | `"default" \| "large"` | `"default"` | Boyut |
268
267
  | `variant` | `"default" \| "subtle"` | `"default"` | Stil |
269
268
  | `minlength` | `number` | — | Min karakter |
@@ -713,6 +712,122 @@ Yan panel; sağdan veya soldan açılır.
713
712
 
714
713
  ---
715
714
 
715
+ ### `<logosphere-table>`
716
+
717
+ Data-driven tablo. Sütun genişlikleri sabittir (varsayılan 160px); toplam genişlik kapsayıcıdan büyükse bileşen kendi sınırları içinde yatay kayar (taşma olmaz). Native HTML `<table>` değil, flex tabanlı div grid kullanır. Sort, search ve selection state'i (dahili) component içinde tutulur; gerçek sıralama/filtreleme/veri değişikliği tüketici tarafında callback'ler üzerinden yapılır (component veriyi kendisi sıralamaz/filtrelemez).
718
+
719
+ `columns` her değiştiğinde (yeni referans/eleman) hem header hem body hücreleri `column.key` ile keyed `repeat()` kullanır — `rows` için zaten kullanılan aynı desen — böylece kolon ekleme/silme/reorder'da lit-html DOM node'larını index'e göre değil kimliğe göre eşleştirir (gereksiz DOM yeniden yazımı olmaz). Ayrıca `columns` değiştiğinde artık var olmayan kolon key'lerine bağlı dahili state (resize genişlikleri, aktif sort, search metni) `willUpdate()` içinde otomatik temizlenir; bu, hem küçük bir memory leak'i hem de bir key'in sonradan farklı bir kolon için yeniden kullanılması durumunda eski değerlerin (örn. resize genişliği) o kolona sessizce sızmasını önler.
720
+
721
+ **Properties**
722
+
723
+ | Property | Tip | Varsayılan | Açıklama |
724
+ |----------|-----|-----------|---------|
725
+ | `columns` | `TableColumn[]` | `[]` | Sütun tanımları (attribute değil) |
726
+ | `actionColumn` | `TableActionColumn` | — | Header'sız, sağda sabit bir aksiyon kolonu (attribute değil) |
727
+ | `rows` | `Record<string, unknown>[]` | `[]` | Satır verisi (attribute değil) |
728
+ | `rowKey` (`row-key`) | `string` | `"id"` | Satırları anahtarlamak için kullanılan alan (keyed render + selection key) |
729
+ | `emptyMessage` (`empty-message`) | `string` | `"Kayıt bulunamadı"` | Satır yoksa gösterilecek mesaj |
730
+ | `maxHeight` (`max-height`) | `number` | — | Verilirse dikey scroll aktif olur (header zaten her zaman `position: sticky; top: 0`) |
731
+ | `selection` | `boolean` | `false` | İlk kolonda checkbox ile satır seçimini aktifleştirir |
732
+ | `stickySelection` (`sticky-selection`) | `boolean` | `false` | `selection` aktifken checkbox kolonunu da sticky kolonların en soluna sabitler (aksi halde sticky data kolonları olsa dahi checkbox otomatik sabitlenmez) |
733
+ | `resizable` | `boolean` | `false` | Sütunlar arasında border gösterir ve header'ın sağ kenarından sürükleyerek sütun genişliğini değiştirmeyi aktifleştirir |
734
+ | `onRowClick` | `(row, rowIndex) => void` | — | Satır tıklama callback'i (attribute değil) |
735
+ | `onSortChange` | `(detail: TableSortChangeDetail) => void` | — | `sortable: true` olan bir header'a tıklandığında çağrılır (attribute değil) |
736
+ | `onSelectChange` | `(detail: TableSelectionChangeDetail) => void` | — | Selection değiştiğinde çağrılır (attribute değil) |
737
+ | `onSearch` | `(detail: TableSearchChangeDetail) => void` | — | `searchable: true` olan bir header'ın input'una yazıldığında 300ms debounce ile çağrılır (attribute değil) |
738
+ | `onWidthChange` | `(detail: TableWidthChangeDetail) => void` | — | `resizable: true` iken bir sütunun sürükleme ile resize'ı bittiğinde çağrılır (attribute değil) |
739
+
740
+ **`TableColumn`**
741
+
742
+ ```ts
743
+ interface TableColumn {
744
+ key: string;
745
+ label: string;
746
+ width?: number; // px, varsayılan 160
747
+ align?: "left" | "center" | "right";
748
+ sortable?: boolean; // onSortChange verilmezse console.warn ile uyarır
749
+ searchable?: boolean; // header altına search input ekler; onSearch verilmezse console.warn ile uyarır
750
+ sticky?: boolean; // kolonu (ve header'ını) yatay scroll'da sabitler (pinned/frozen)
751
+ render?: (context: TableCellContext) => unknown; // string veya TemplateResult
752
+ }
753
+
754
+ interface TableCellContext {
755
+ value: unknown;
756
+ row: Record<string, unknown>;
757
+ rowIndex: number;
758
+ column: TableColumn;
759
+ }
760
+
761
+ interface TableActionColumn {
762
+ width?: number; // px, varsayılan 96
763
+ render: (context: { row: Record<string, unknown>; rowIndex: number }) => unknown;
764
+ }
765
+ ```
766
+
767
+ **Sticky (pinned) kolonlar**
768
+
769
+ Bir veya daha fazla kolona `sticky: true` verildiğinde, o kolon(lar) ve header'ları tablo yatay kaydırılırken görünür kalacak şekilde sabitlenir. Sticky kolonlar `columns` dizisindeki sırayla soldan sağa yan yana konumlanır (offset, kendisinden önceki sticky kolonların toplam genişliğidir — aralarında sticky olmayan bir kolon olsa da hesap sadece sticky olanları sayar). Checkbox selection kolonu **otomatik olarak sabitlenmez**; sadece tabloya `stickySelection` (`sticky-selection`) verilirse checkbox kolonu da sticky kolonların en soluna eklenir — bu durumda `stickySelection` tek başına (hiçbir data kolonu sticky olmasa da) checkbox'ı sabitleyebilir. Sabitlenmiş bloğun **sadece en son (en sağdaki) hücresinde** ince bir ayraç gölgesi (`box-shadow`) gösterilir — sticky kolonlar birbirine bitişik olmasa bile (araya sticky olmayan bir kolon girse bile) gölge tek bir yerde, en sondaki sticky hücrede çıkar; birden fazla gölge oluşmaz. `actionColumn` şu an sticky desteklemiyor (her zaman sağda, tablo ile birlikte scroll olur).
770
+
771
+ ```ts
772
+ const columns: TableColumn[] = [
773
+ { key: "stokNo", label: "Stok No.", sticky: true, width: 140 },
774
+ { key: "stokAdi", label: "Stok Adı" },
775
+ // ...
776
+ ];
777
+ ```
778
+
779
+ ```html
780
+ <!-- selection kolonu, sticky kolonların en soluna sabitlenir -->
781
+ <logosphere-table selection sticky-selection .columns=${columns} .rows=${rows}></logosphere-table>
782
+ ```
783
+
784
+ **Sütun genişliğini sürükleyerek değiştirme (resizable)**
785
+
786
+ Tabloya `resizable` verildiğinde her data kolonunun (selection ve `actionColumn` hariç) sağında bir border belirir ve header hücresinin sağ kenarında sürüklenebilir bir handle oluşur (pointer events ile, mouse + touch). Sürükleme sırasında genişlik component içinde tutulan dahili state (`columnWidths`) üzerinden anlık güncellenir — `column.width` değeri değişmez, sadece o kolon için geçici bir override uygulanır. Sürükleme bittiğinde (`pointerup`/`pointercancel`) `onWidthChange` callback'i ve `width-change` event'i `{ column, key, width }` detail'i ile bir kez tetiklenir. Genişlik `60px`'in altına düşürülemez (`MIN_COLUMN_WIDTH`).
787
+
788
+ ```html
789
+ <logosphere-table
790
+ resizable
791
+ .columns=${columns}
792
+ .rows=${rows}
793
+ .onWidthChange=${({ column, key, width }) => console.log(key, width)}
794
+ ></logosphere-table>
795
+ ```
796
+
797
+ **Events**
798
+
799
+ | Event | `detail` |
800
+ |-------|---------|
801
+ | `row-click` | `{ row, rowIndex }` |
802
+ | `sort-change` | `TableSortChangeDetail` → `{ column, key, direction: "asc" \| "desc" }` |
803
+ | `select-change` | `TableSelectionChangeDetail` → `{ selectedRows, selectedKeys }` |
804
+ | `search-change` | `TableSearchChangeDetail` → `{ values: { key, value }[] }` (yalnızca boş olmayan search alanları) |
805
+ | `width-change` | `TableWidthChangeDetail` → `{ column, key, width }` (sürükleme ile resize bittiğinde) |
806
+
807
+ ```html
808
+ <logosphere-table
809
+ .columns=${[
810
+ { key: "stokNo", label: "Stok No.", sticky: true, sortable: true },
811
+ { key: "stokAdi", label: "Stok Adı", searchable: true },
812
+ {
813
+ key: "durum",
814
+ label: "Durum",
815
+ width: 140,
816
+ render: ({ value }) => html`<logosphere-badge text=${value} variant=${value === "Aktif" ? "success" : "danger"}></logosphere-badge>`
817
+ },
818
+ ]}
819
+ .rows=${rows}
820
+ row-key="id"
821
+ selection
822
+ .onSortChange=${(detail) => console.log(detail)}
823
+ .onSearch=${(detail) => console.log(detail)}
824
+ .onSelectChange=${(detail) => console.log(detail)}
825
+ @row-click=${(e) => console.log(e.detail)}
826
+ ></logosphere-table>
827
+ ```
828
+
829
+ ---
830
+
716
831
  ### `<logosphere-toast>` ve `ToastService`
717
832
 
718
833
  Bildirim mesajı. Genellikle doğrudan kullanmak yerine `ToastService` kullanılır.
@@ -1146,6 +1261,45 @@ SVG ikon bileşeni. `icon-map.ts`'deki kayıtlı ikonları isimle render eder.
1146
1261
 
1147
1262
  ---
1148
1263
 
1264
+ ## Tam Component Katalogu
1265
+
1266
+ Core paketindeki tum Web Component'ler ve en sik kullanimlari:
1267
+
1268
+ | Web Component | Import | Kullanim |
1269
+ |---------------|--------|----------|
1270
+ | `<logosphere-accordion>` | `@logosphere-ui/core/accordion` | Coklu collapse gruplari: `<logosphere-accordion .items=${items} multiple></logosphere-accordion>` |
1271
+ | `<logosphere-badge>` | `@logosphere-ui/core/badge` | Durum etiketi: `<logosphere-badge variant="success">Aktif</logosphere-badge>` |
1272
+ | `<logosphere-breadcrumb>` | `@logosphere-ui/core/breadcrumb` | Sayfa yolu: `<logosphere-breadcrumb .items=${items}></logosphere-breadcrumb>` |
1273
+ | `<logosphere-button>` | `@logosphere-ui/core/button` | Aksiyon: `<logosphere-button theme="primary">Kaydet</logosphere-button>` |
1274
+ | `<logosphere-calendar>` | `@logosphere-ui/core/calendar` | Takvim: `<logosphere-calendar .value=${date}></logosphere-calendar>` |
1275
+ | `<logosphere-card>` | `@logosphere-ui/core/card` | Panel/ozet: `<logosphere-card title="Ozet">...</logosphere-card>` |
1276
+ | `<logosphere-chatbot>` | `@logosphere-ui/core/chatbot` | Yardim paneli: `<logosphere-chatbot question-prompt="Sorunuzu yazin"></logosphere-chatbot>` |
1277
+ | `<logosphere-checkbox>` | `@logosphere-ui/core/checkbox` | Onay/radio/switch: `<logosphere-checkbox checked label="Aktif"></logosphere-checkbox>` |
1278
+ | `<logosphere-chip-group>` | `@logosphere-ui/core/chip-group` | Filtre chipleri: `<logosphere-chip-group .items=${items} .value=${value}></logosphere-chip-group>` |
1279
+ | `<logosphere-collapse>` | `@logosphere-ui/core/collapse` | Tek acilir panel: `<logosphere-collapse title="Detaylar">...</logosphere-collapse>` |
1280
+ | `<logosphere-combobox>` | `@logosphere-ui/core/combobox` | Select/autocomplete: `<logosphere-combobox .items=${items} multiple></logosphere-combobox>` |
1281
+ | `<logosphere-datepicker>` | `@logosphere-ui/core/datepicker` | Tarih secimi: `<logosphere-datepicker value="2026-07-21"></logosphere-datepicker>` |
1282
+ | `<download-manager>` | `@logosphere-ui/core/download-manager` | Indirme yoneticisi: `<download-manager maxConcurrentDownloads="3" maxConcurrentChunks="4"></download-manager>` |
1283
+ | `<logosphere-drawer>` | `@logosphere-ui/core/drawer` | Detay paneli: `<logosphere-drawer open title="Detay">...</logosphere-drawer>` |
1284
+ | `<logosphere-formfield>` | `@logosphere-ui/core/formfield` | Label/helper/error sarmalayici: `<logosphere-formfield label="Ad">...</logosphere-formfield>` |
1285
+ | `<ui-icon>` | `@logosphere-ui/core/icon` | Ikon: `<ui-icon name="uil-search" size="16"></ui-icon>` |
1286
+ | `<logosphere-input>` | `@logosphere-ui/core/input` | Metin/arama/maskeli alan: `<logosphere-input placeholder="Ara"></logosphere-input>` |
1287
+ | `<logosphere-input-group>` | `@logosphere-ui/core/input-group` | Bitişik form alanlari: `<logosphere-input-group>...</logosphere-input-group>` |
1288
+ | `<logosphere-leftmenu>` | `@logosphere-ui/core/left-menu` | Sol menu: `<logosphere-leftmenu .items=${items} open></logosphere-leftmenu>` |
1289
+ | `<logosphere-modal>` | `@logosphere-ui/core/modal` | Dialog/confirm: `<logosphere-modal open title="Onay">...</logosphere-modal>` |
1290
+ | `<logosphere-pagination>` | `@logosphere-ui/core/pagination` | Sayfalama: `<logosphere-pagination page="1" total="120"></logosphere-pagination>` |
1291
+ | `<logosphere-popover>` | `@logosphere-ui/core/popover` | Hover/click popup: `<logosphere-popover trigger="hover">...</logosphere-popover>` |
1292
+ | `<logosphere-slider>` | `@logosphere-ui/core/slider` | Tek/range slider: `<logosphere-slider value="50"></logosphere-slider>` |
1293
+ | `<logosphere-split-button>` | `@logosphere-ui/core/split-button` | Ana aksiyon + dropdown: `<logosphere-split-button label="Kaydet" .items=${items}></logosphere-split-button>` |
1294
+ | `<logosphere-stepper>` | `@logosphere-ui/core/stepper` | Surec adimlari: `<logosphere-stepper .steps=${steps} activeStep="1"></logosphere-stepper>` |
1295
+ | `<logosphere-switch>` | `@logosphere-ui/core/switch` | Toggle: `<logosphere-switch checked></logosphere-switch>` |
1296
+ | `<logosphere-tab>` | `@logosphere-ui/core/tab` | Sekmeler: `<logosphere-tab .items=${tabs}></logosphere-tab>` |
1297
+ | `<logosphere-table>` | `@logosphere-ui/core/table` | Veri tablosu: `<logosphere-table .columns=${columns} .rows=${rows} selection borderless></logosphere-table>` |
1298
+ | `<logosphere-textarea>` | `@logosphere-ui/core/textarea` | Cok satirli metin: `<logosphere-textarea value="Not"></logosphere-textarea>` |
1299
+ | `<logosphere-timepicker>` | `@logosphere-ui/core/timepicker` | Saat secimi: `<logosphere-timepicker value="09:30"></logosphere-timepicker>` |
1300
+ | `<logosphere-toast>` / `<logosphere-toast-container>` | `@logosphere-ui/core/toast` | Bildirim: `<logosphere-toast-container></logosphere-toast-container>` |
1301
+ | `<logosphere-tree-menu>` | `@logosphere-ui/core/tree-menu` | Agac menu: `<logosphere-tree-menu .items=${items}></logosphere-tree-menu>` |
1302
+
1149
1303
  ## Design Tokens (CSS Değişkenleri)
1150
1304
 
1151
1305
  Bileşenler bu token'ları kullanır; tema özelleştirmek için `:root` üzerinde override et.
@@ -1,4 +1,4 @@
1
- "use strict";const n=require("lit"),r=require("lit/decorators.js"),y=require("lit/directives/unsafe-html.js");require("./combobox-BAa3UAQs.cjs");require("./button-vdNReBMi.cjs");require("./input-tZU_snSC.cjs");require("./ui-icon-DWl7I5BQ.cjs");const w=":host{display:block;z-index:9999}.chatbot{font-family:var(--font-family-base)}.chatbot__overlay{position:fixed;inset:0;background-color:#0003;z-index:var(--z-index-modal-backdrop)}.chatbot__launcher{position:fixed;z-index:var(--z-index-modal);display:flex;align-items:center;gap:var(--spacing-4);padding-left:var(--spacing-4);padding-right:var(--spacing-4);height:66px;color:#fff;border-radius:var(--radius-xl);cursor:pointer;box-shadow:var(--shadow-md);background-color:var(--chatbot-bg, var(--color-body-bg));overflow:hidden;transition:box-shadow var(--transition-speed-fast) var(--transition-timing)}.chatbot__launcher:hover{box-shadow:var(--shadow-md)}.chatbot__launcher--draggable{cursor:move}.chatbot__launcher--hidden{visibility:hidden;width:72px;height:66px;justify-content:center;padding:0}.chatbot__launcher-icon{width:40px;height:34px;flex-shrink:0}.chatbot__launcher-text{display:flex;flex-direction:column}.chatbot__launcher-title{font-weight:var(--font-weight-semibold);font-size:var(--font-size-xl);margin:0;line-height:24px;white-space:nowrap;color:var(--color-body-color)}.chatbot__launcher-subtitle{font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);margin:0;line-height:20px;white-space:nowrap;color:var(--color-tertiary)}.chatbot__window{position:fixed;z-index:var(--z-index-modal);display:flex;flex-direction:column;box-shadow:var(--shadow-xl);border-radius:var(--radius-md);overflow:hidden;background-color:var(--chatbot-bg, var(--color-body-bg))}.chatbot__window--hidden{display:none}.chatbot__window--fullscreen{inset:80px 50px;width:auto;height:auto}.chatbot__resize-top{position:absolute;top:0;left:0;right:0;height:8px;cursor:ns-resize;z-index:50;transition:background-color var(--transition-speed-fast) var(--transition-timing)}.chatbot__resize-top:hover{background-color:#0000000d}.chatbot__resize-side{position:absolute;top:0;bottom:0;width:8px;cursor:ew-resize;z-index:50;transition:background-color var(--transition-speed-fast) var(--transition-timing)}.chatbot__resize-side:hover{background-color:#0000000d}.chatbot__resize-side--left{left:0}.chatbot__resize-side--right{right:0}.chatbot__resize-corner{position:absolute;top:0;width:16px;height:16px;z-index:50;transition:background-color var(--transition-speed-fast) var(--transition-timing)}.chatbot__resize-corner:hover{background-color:#0000001a}.chatbot__resize-corner--nwse{left:0;cursor:nwse-resize}.chatbot__resize-corner--nesw{right:0;cursor:nesw-resize}.chatbot__header{height:74px;display:flex;align-items:center;justify-content:space-between;padding-left:var(--spacing-5);padding-right:var(--spacing-4);gap:var(--spacing-4);flex-shrink:0;background-color:var(--chatbot-bg, var(--color-body-bg));border-bottom:1px solid var(--color-border)}.chatbot__header-info{display:flex;align-items:center;gap:var(--spacing-4)}.chatbot__header-logo{width:50px;height:41px}.chatbot__header-title{font-weight:var(--font-weight-semibold);font-size:var(--font-size-xl);margin:0;line-height:24px;color:var(--color-body-text)}.chatbot__header-subtitle{font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);margin:0;line-height:20px;color:var(--color-tertiary)}.chatbot__header-actions{display:flex;align-items:center;gap:var(--spacing-2)}.chatbot__body{flex:1;display:flex;flex-direction:column;background-color:var(--chatbot-bg, var(--color-body-bg));position:relative;overflow:hidden}.chatbot__product{padding:var(--spacing-3);padding-bottom:0;flex-shrink:0;margin:0 var(--spacing-3)}.chatbot__messages{flex:1;display:flex;flex-direction:column;gap:var(--spacing-3);margin-top:var(--spacing-4);padding:var(--spacing-4);overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none}.chatbot__messages::-webkit-scrollbar{display:none}.chatbot__messages-wrapper{position:relative;flex:1;display:flex;flex-direction:column;overflow:hidden}.chatbot__scroll-down{position:absolute;bottom:8px;left:50%;transform:translate(-50%);width:36px;height:36px;border-radius:var(--radius-full);background-color:var(--chatbot-bg, var(--color-body-bg));border:1px solid var(--color-border);box-shadow:var(--shadow-md);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-body-text);z-index:10;transition:background-color var(--transition-speed-fast) var(--transition-timing),box-shadow var(--transition-speed-fast) var(--transition-timing);padding:0}.chatbot__scroll-down:hover{background-color:var(--color-light);box-shadow:var(--shadow-lg)}.chatbot__message{display:flex}.chatbot__message--user{justify-content:flex-end}.chatbot__message--assistant{display:block}.chatbot__message--system{justify-content:flex-start}.chatbot__bubble{position:relative;color:var(--color-body-text);max-width:85%;border-radius:var(--radius-md);padding:var(--spacing-4);font-size:var(--font-size-sm);line-height:20px;font-weight:var(--font-weight-medium)}.chatbot__bubble--user{background-color:var(--color-primary);color:#fff;border-bottom-right-radius:0;border-top-right-radius:var(--radius-xl);border-top-left-radius:var(--radius-xl);border-bottom-left-radius:var(--radius-xl)}.chatbot__bubble--user a{color:#ffffffe6}.chatbot__bubble--assistant,.chatbot__bubble--system{background-color:var(--color-light);border-bottom-left-radius:0;border-top-right-radius:var(--radius-xl);border-top-left-radius:var(--radius-xl);border-bottom-right-radius:var(--radius-xl)}.chatbot__message-content p{margin:0}.chatbot__message-content ol{list-style-type:decimal;margin:0;padding-left:var(--spacing-5)}.chatbot__message-content ul{list-style-type:disc;margin:0;padding-left:var(--spacing-5)}.chatbot__message-content li>ol,.chatbot__message-content li>ul{margin-top:var(--spacing-1);margin-bottom:var(--spacing-1)}.chatbot__message-content ol ol{list-style-type:lower-alpha}.chatbot__message-content ol ol ol{list-style-type:lower-roman}.chatbot__message-content ul ul{list-style-type:circle}.chatbot__message-content ul ul ul{list-style-type:square}.chatbot__message-content li{padding-left:var(--spacing-1)}.chatbot__message-content a{color:var(--color-primary);text-decoration:underline;transition:color var(--transition-speed-fast) var(--transition-timing)}.chatbot__message-content a:hover{color:var(--color-primary-hover)}.chatbot__feedback{display:flex;align-items:center;gap:var(--spacing-2);padding-top:var(--spacing-2)}.chatbot__typing-wrapper{display:flex;justify-content:flex-start}.chatbot__typing{background-color:var(--color-light);padding:var(--spacing-3);border-radius:var(--radius-xl);border-bottom-left-radius:0;display:inline-flex;align-items:center;gap:2px}.chatbot__typing-dot{display:inline-block;width:6px;height:6px;background-color:var(--color-gray-300);border-radius:var(--radius-full);animation:chatbot-typing 1.4s infinite ease-in-out both;margin:0 2px}.chatbot__typing-dot:nth-child(1){animation-delay:-.32s}.chatbot__typing-dot:nth-child(2){animation-delay:-.16s}@keyframes chatbot-typing{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}.chatbot__input-area{padding:var(--spacing-4);padding-top:var(--spacing-2);padding-bottom:var(--spacing-1);background-color:var(--chatbot-bg, var(--color-body-bg))}.chatbot__input-wrapper{position:relative;display:flex;align-items:center;gap:var(--spacing-2);background-color:var(--color-light);border-radius:var(--radius-md);padding:var(--spacing-2);border:1px solid transparent;transition:background-color var(--transition-speed-fast) var(--transition-timing),border-color var(--transition-speed-fast) var(--transition-timing)}.chatbot__input-wrapper:focus-within{background-color:var(--chatbot-bg, var(--color-body-bg));border-color:var(--color-border)}.chatbot__input{flex:1;background:transparent;border:none;outline:none;font-family:var(--font-family-base);font-size:var(--font-size-sm);color:var(--color-body-text)}.chatbot__input::placeholder{color:var(--color-tertiary)}.chatbot__input:disabled{opacity:.5;cursor:not-allowed}.chatbot__footer{display:flex;align-items:center;justify-content:center;padding-bottom:var(--spacing-2)}.chatbot__footer-text{margin:0;padding:0;color:var(--chatbot-color, var(--color-secondary));font-size:var(--font-size-xs);font-family:var(--font-family-base)}.chatbot__product-selector{padding:var(--spacing-3) var(--spacing-3) 0;flex-shrink:0}.chatbot__product-input{display:block;width:100%;height:24px;padding-left:var(--spacing-1);border:1px solid var(--color-border);border-radius:var(--radius-md);background:transparent;color:var(--color-body-color);font-size:var(--font-size-md);outline:none}";var x=Object.defineProperty,C=Object.getOwnPropertyDescriptor,a=(l,t,e,i)=>{for(var o=i>1?void 0:i?C(t,e):t,s=l.length-1,h;s>=0;s--)(h=l[s])&&(o=(i?h(t,e,o):h(o))||o);return i&&o&&x(t,e,o),o};exports.LogosphereChatBot=class extends n.LitElement{constructor(){super(...arguments),this.returnUri="",this.questionPrompt="",this.minimizedIconOnly=!1,this.draggable=!1,this.resizable=!1,this.products=[],this.openInitially=!1,this.showFeedbackButtons=!1,this.open=!1,this.fullscreen=!1,this.messages=[],this.isLoading=!1,this.inputText="",this.selectedProductId="",this.windowWidth=440,this.windowHeight=700,this.position={right:20,bottom:20},this.isDragging=!1,this.screenWidth=1024,this.userAtBottom=!0,this.showScrollDown=!1,this.dragStartPos={x:0,y:0},this.initialPosition={right:0,bottom:0},this.isResizing=!1,this.resizeDirection="horizontal",this.resizeStartWidth=0,this.resizeStartHeight=0,this.onWindowResize=()=>{this.screenWidth=window.innerWidth;const t=window.innerHeight-40;this.windowHeight>t&&(this.windowHeight=t)},this.onToggle=()=>{this.open=!this.open,this.open&&this.scrollToBottom(!0)},this.onClose=()=>{this.open=!1,this.fullscreen=!1},this.onToggleFullscreen=()=>{this.fullscreen=!this.fullscreen},this.onMouseMove=t=>{if(this.isDragging){const e=this.dragStartPos.x-t.clientX,i=this.dragStartPos.y-t.clientY,s=this.shadowRoot?.querySelector(".chatbot__launcher")?.getBoundingClientRect(),h=s?.width||72,g=s?.height||66;this.position={right:Math.max(0,Math.min(window.innerWidth-h,this.initialPosition.right+e)),bottom:Math.max(0,Math.min(window.innerHeight-g,this.initialPosition.bottom+i))}}else if(this.isResizing){const e=this.dragStartPos.x-t.clientX,i=this.dragStartPos.y-t.clientY;if(this.resizeDirection==="horizontal"||this.resizeDirection==="both"){const o=this.position.right<this.screenWidth/2;this.windowWidth=Math.max(300,this.resizeStartWidth+(o?e:-e))}(this.resizeDirection==="vertical"||this.resizeDirection==="both")&&(this.windowHeight=Math.max(400,this.resizeStartHeight+i))}},this.onMouseUp=t=>{this.isDragging?(this.isDragging=!1,window.removeEventListener("mousemove",this.onMouseMove),window.removeEventListener("mouseup",this.onMouseUp),Math.hypot(t.clientX-this.dragStartPos.x,t.clientY-this.dragStartPos.y)<5&&this.onToggle()):this.isResizing&&(this.isResizing=!1,window.removeEventListener("mousemove",this.onMouseMove),window.removeEventListener("mouseup",this.onMouseUp))},this.handleKeyDown=t=>{t.key==="Enter"&&!t.shiftKey&&(t.preventDefault(),this.sendMessage())},this.onInput=t=>{const e=t.target;this.inputText=e?e.value:t.detail},this.onChatScroll=()=>{const t=this.isNearBottom();this.userAtBottom=t,t&&(this.showScrollDown=!1)},this.onScrollToBottomClick=()=>{this.scrollToBottom(!0)},this.onRate=async(t,e)=>{if(!(!t.eventId||t.rating===e))try{await this.rateMessage(t.eventId,e),this.messages=this.messages.map(i=>i===t?{...i,rating:e}:i)}catch{}},this.onCopyMessage=t=>{navigator.clipboard.writeText(t)}}connectedCallback(){super.connectedCallback(),!n.isServer&&(this.screenWidth=window.innerWidth,this.windowHeight=Math.min(700,window.innerHeight-40),window.addEventListener("resize",this.onWindowResize))}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("resize",this.onWindowResize),window.removeEventListener("mousemove",this.onMouseMove),window.removeEventListener("mouseup",this.onMouseUp)}async firstUpdated(){this.selectedProductId=this._resolveInitialProduct(),this.open=this.openInitially,this.open&&await this.initConversation()}updated(t){t.has("products")&&this.handleProductUpdate(),t.has("messages")&&this.scrollToBottom(),t.has("open")&&this.open&&!this.conversationId&&this.initConversation()}_resolveInitialProduct(){if(!this.products.length)return"";const t=this.products.find(e=>e.selected);return t?t.id:this.products.length===1?this.products[0].id:""}handleProductUpdate(){if(!this.products.length)return;const t=this.products.find(i=>i.selected),e=this.products.some(i=>i.id===this.selectedProductId);t&&t.id!==this.selectedProductId?(this.selectedProductId=t.id,this.messages=[],this.conversationId=void 0,this.open&&this.initConversation()):e||(this.selectedProductId=this._resolveInitialProduct(),this.messages=[],this.conversationId=void 0,this.open&&this.initConversation()),requestAnimationFrame(()=>this.updateComboboxItems())}updateComboboxItems(){const t=this.productEl;if(!t||this.products?.length<=1)return;const e=this.products.map(o=>({value:o.id,label:o.name}));if(t.items=e,(t.selectedItems?.()||[])[0]?.value!==this.selectedProductId){const o=e.find(s=>s.value===this.selectedProductId);t.setSelected&&t.setSelected(o?[o]:[])}}async onProductChange(t){const e=t.detail?.selected?.[0]?.value;e&&e!==this.selectedProductId&&(this.selectedProductId=e)}onMouseDown(t){this.draggable&&(t.preventDefault(),this.isDragging=!0,this.dragStartPos={x:t.clientX,y:t.clientY},this.initialPosition={...this.position},window.addEventListener("mousemove",this.onMouseMove),window.addEventListener("mouseup",this.onMouseUp))}startResize(t,e){this.resizable&&(t.preventDefault(),t.stopPropagation(),this.isResizing=!0,this.resizeDirection=e,this.dragStartPos={x:t.clientX,y:t.clientY},this.resizeStartWidth=this.windowWidth,this.resizeStartHeight=this.windowHeight,window.addEventListener("mousemove",this.onMouseMove),window.addEventListener("mouseup",this.onMouseUp))}async ensureToken(t=!1){const e="logosphere_chatbot_token";if(t&&(this.assertionToken=void 0,localStorage.removeItem(e)),!t){const s=localStorage.getItem(e);if(s){this.assertionToken=s;return}}const o=await(await fetch(`${this.returnUri}/api/chat/start`)).json();if(!o.Success||!o.Data?.Token)throw new Error("Token alınamadı");this.assertionToken=o.Data.Token,localStorage.setItem(e,this.assertionToken)}async postChat(t){await this.ensureToken();const e=`${this.returnUri}/api/chat/completions`,i=()=>fetch(e,{method:"POST",headers:{"Content-Type":"application/json",client_assertion:this.assertionToken,client_assertion_type:"urn:ietf:params:oauth:client-assertion-type:jwt-bearer"},body:JSON.stringify(t)});let o=await i();if(o.status===401&&(await this.ensureToken(!0),o=await i()),!o.ok)throw new Error(`HTTP ${o.status}`);return o.json()}async initConversation(){if(!this.isLoading){this.isLoading=!0;try{await this.ensureToken();const t=await this.postChat({ChatCompletionType:"NewConversation",Context:this.selectedProductId,QuestionPrompt:this.questionPrompt});this.conversationId=t.Data.ConversationId;const e=t.Data.Choices?.[0]?.Message?.Content;e&&this.addMessage(e,"assistant",void 0,!0)}catch{this.addMessage("Bir hata oluştu, lütfen tekrar deneyiniz.","system")}finally{this.isLoading=!1}}}async sendMessage(){const t=this.inputText.trim();if(!(!t||!this.conversationId||this.isLoading)){if(!this.selectedProductId){this.addMessage("Lütfen önce bir ürün seçiniz.","system");return}this.addMessage(t,"user"),this.inputText="",this.scrollToBottom(),this.isLoading=!0;try{const e=await this.postChat({ChatCompletionType:"ConversationUpdate",Content:t,Context:this.selectedProductId,ConversationId:this.conversationId,QuestionPrompt:this.questionPrompt}),i=e.Data?.Choices?.[0]?.Message?.Content,o=e.Data?.EventId;this.addMessage(i||"Cevap alınamadı.","assistant",o)}catch{this.addMessage("Bağlantı hatası.","system")}finally{this.isLoading=!1}}}addMessage(t,e,i,o=!1){this.messages=[...this.messages,{content:t,role:e,timestamp:Date.now(),eventId:i,isWelcome:o}]}isNearBottom(t=50){const e=this.chatContainer;return e?e.scrollHeight-e.scrollTop-e.clientHeight<=t:!0}scrollToBottom(t=!1){if(!t&&!this.userAtBottom){this.showScrollDown=!0;return}setTimeout(()=>{this.chatContainer&&(this.chatContainer.scrollTop=this.chatContainer.scrollHeight,this.showScrollDown=!1,this.userAtBottom=!0)},0)}async rateMessage(t,e,i=null){await this.ensureToken();const o=`${this.returnUri}/api/chat/completion/rate`;await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",client_assertion:this.assertionToken,client_assertion_type:"urn:ietf:params:oauth:client-assertion-type:jwt-bearer"},body:JSON.stringify({EventId:t,Rate:e,Comment:i})})}formatContent(t){if(!t)return"";const i=t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").split(`
1
+ "use strict";const n=require("lit"),r=require("lit/decorators.js"),y=require("lit/directives/unsafe-html.js");require("./combobox-BAa3UAQs.cjs");require("./button-vdNReBMi.cjs");require("./input-DyLKo7h6.cjs");require("./ui-icon-DWl7I5BQ.cjs");const w=":host{display:block;z-index:9999}.chatbot{font-family:var(--font-family-base)}.chatbot__overlay{position:fixed;inset:0;background-color:#0003;z-index:var(--z-index-modal-backdrop)}.chatbot__launcher{position:fixed;z-index:var(--z-index-modal);display:flex;align-items:center;gap:var(--spacing-4);padding-left:var(--spacing-4);padding-right:var(--spacing-4);height:66px;color:#fff;border-radius:var(--radius-xl);cursor:pointer;box-shadow:var(--shadow-md);background-color:var(--chatbot-bg, var(--color-body-bg));overflow:hidden;transition:box-shadow var(--transition-speed-fast) var(--transition-timing)}.chatbot__launcher:hover{box-shadow:var(--shadow-md)}.chatbot__launcher--draggable{cursor:move}.chatbot__launcher--hidden{visibility:hidden;width:72px;height:66px;justify-content:center;padding:0}.chatbot__launcher-icon{width:40px;height:34px;flex-shrink:0}.chatbot__launcher-text{display:flex;flex-direction:column}.chatbot__launcher-title{font-weight:var(--font-weight-semibold);font-size:var(--font-size-xl);margin:0;line-height:24px;white-space:nowrap;color:var(--color-body-color)}.chatbot__launcher-subtitle{font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);margin:0;line-height:20px;white-space:nowrap;color:var(--color-tertiary)}.chatbot__window{position:fixed;z-index:var(--z-index-modal);display:flex;flex-direction:column;box-shadow:var(--shadow-xl);border-radius:var(--radius-md);overflow:hidden;background-color:var(--chatbot-bg, var(--color-body-bg))}.chatbot__window--hidden{display:none}.chatbot__window--fullscreen{inset:80px 50px;width:auto;height:auto}.chatbot__resize-top{position:absolute;top:0;left:0;right:0;height:8px;cursor:ns-resize;z-index:50;transition:background-color var(--transition-speed-fast) var(--transition-timing)}.chatbot__resize-top:hover{background-color:#0000000d}.chatbot__resize-side{position:absolute;top:0;bottom:0;width:8px;cursor:ew-resize;z-index:50;transition:background-color var(--transition-speed-fast) var(--transition-timing)}.chatbot__resize-side:hover{background-color:#0000000d}.chatbot__resize-side--left{left:0}.chatbot__resize-side--right{right:0}.chatbot__resize-corner{position:absolute;top:0;width:16px;height:16px;z-index:50;transition:background-color var(--transition-speed-fast) var(--transition-timing)}.chatbot__resize-corner:hover{background-color:#0000001a}.chatbot__resize-corner--nwse{left:0;cursor:nwse-resize}.chatbot__resize-corner--nesw{right:0;cursor:nesw-resize}.chatbot__header{height:74px;display:flex;align-items:center;justify-content:space-between;padding-left:var(--spacing-5);padding-right:var(--spacing-4);gap:var(--spacing-4);flex-shrink:0;background-color:var(--chatbot-bg, var(--color-body-bg));border-bottom:1px solid var(--color-border)}.chatbot__header-info{display:flex;align-items:center;gap:var(--spacing-4)}.chatbot__header-logo{width:50px;height:41px}.chatbot__header-title{font-weight:var(--font-weight-semibold);font-size:var(--font-size-xl);margin:0;line-height:24px;color:var(--color-body-text)}.chatbot__header-subtitle{font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);margin:0;line-height:20px;color:var(--color-tertiary)}.chatbot__header-actions{display:flex;align-items:center;gap:var(--spacing-2)}.chatbot__body{flex:1;display:flex;flex-direction:column;background-color:var(--chatbot-bg, var(--color-body-bg));position:relative;overflow:hidden}.chatbot__product{padding:var(--spacing-3);padding-bottom:0;flex-shrink:0;margin:0 var(--spacing-3)}.chatbot__messages{flex:1;display:flex;flex-direction:column;gap:var(--spacing-3);margin-top:var(--spacing-4);padding:var(--spacing-4);overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none}.chatbot__messages::-webkit-scrollbar{display:none}.chatbot__messages-wrapper{position:relative;flex:1;display:flex;flex-direction:column;overflow:hidden}.chatbot__scroll-down{position:absolute;bottom:8px;left:50%;transform:translate(-50%);width:36px;height:36px;border-radius:var(--radius-full);background-color:var(--chatbot-bg, var(--color-body-bg));border:1px solid var(--color-border);box-shadow:var(--shadow-md);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-body-text);z-index:10;transition:background-color var(--transition-speed-fast) var(--transition-timing),box-shadow var(--transition-speed-fast) var(--transition-timing);padding:0}.chatbot__scroll-down:hover{background-color:var(--color-light);box-shadow:var(--shadow-lg)}.chatbot__message{display:flex}.chatbot__message--user{justify-content:flex-end}.chatbot__message--assistant{display:block}.chatbot__message--system{justify-content:flex-start}.chatbot__bubble{position:relative;color:var(--color-body-text);max-width:85%;border-radius:var(--radius-md);padding:var(--spacing-4);font-size:var(--font-size-sm);line-height:20px;font-weight:var(--font-weight-medium)}.chatbot__bubble--user{background-color:var(--color-primary);color:#fff;border-bottom-right-radius:0;border-top-right-radius:var(--radius-xl);border-top-left-radius:var(--radius-xl);border-bottom-left-radius:var(--radius-xl)}.chatbot__bubble--user a{color:#ffffffe6}.chatbot__bubble--assistant,.chatbot__bubble--system{background-color:var(--color-light);border-bottom-left-radius:0;border-top-right-radius:var(--radius-xl);border-top-left-radius:var(--radius-xl);border-bottom-right-radius:var(--radius-xl)}.chatbot__message-content p{margin:0}.chatbot__message-content ol{list-style-type:decimal;margin:0;padding-left:var(--spacing-5)}.chatbot__message-content ul{list-style-type:disc;margin:0;padding-left:var(--spacing-5)}.chatbot__message-content li>ol,.chatbot__message-content li>ul{margin-top:var(--spacing-1);margin-bottom:var(--spacing-1)}.chatbot__message-content ol ol{list-style-type:lower-alpha}.chatbot__message-content ol ol ol{list-style-type:lower-roman}.chatbot__message-content ul ul{list-style-type:circle}.chatbot__message-content ul ul ul{list-style-type:square}.chatbot__message-content li{padding-left:var(--spacing-1)}.chatbot__message-content a{color:var(--color-primary);text-decoration:underline;transition:color var(--transition-speed-fast) var(--transition-timing)}.chatbot__message-content a:hover{color:var(--color-primary-hover)}.chatbot__feedback{display:flex;align-items:center;gap:var(--spacing-2);padding-top:var(--spacing-2)}.chatbot__typing-wrapper{display:flex;justify-content:flex-start}.chatbot__typing{background-color:var(--color-light);padding:var(--spacing-3);border-radius:var(--radius-xl);border-bottom-left-radius:0;display:inline-flex;align-items:center;gap:2px}.chatbot__typing-dot{display:inline-block;width:6px;height:6px;background-color:var(--color-gray-300);border-radius:var(--radius-full);animation:chatbot-typing 1.4s infinite ease-in-out both;margin:0 2px}.chatbot__typing-dot:nth-child(1){animation-delay:-.32s}.chatbot__typing-dot:nth-child(2){animation-delay:-.16s}@keyframes chatbot-typing{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}.chatbot__input-area{padding:var(--spacing-4);padding-top:var(--spacing-2);padding-bottom:var(--spacing-1);background-color:var(--chatbot-bg, var(--color-body-bg))}.chatbot__input-wrapper{position:relative;display:flex;align-items:center;gap:var(--spacing-2);background-color:var(--color-light);border-radius:var(--radius-md);padding:var(--spacing-2);border:1px solid transparent;transition:background-color var(--transition-speed-fast) var(--transition-timing),border-color var(--transition-speed-fast) var(--transition-timing)}.chatbot__input-wrapper:focus-within{background-color:var(--chatbot-bg, var(--color-body-bg));border-color:var(--color-border)}.chatbot__input{flex:1;background:transparent;border:none;outline:none;font-family:var(--font-family-base);font-size:var(--font-size-sm);color:var(--color-body-text)}.chatbot__input::placeholder{color:var(--color-tertiary)}.chatbot__input:disabled{opacity:.5;cursor:not-allowed}.chatbot__footer{display:flex;align-items:center;justify-content:center;padding-bottom:var(--spacing-2)}.chatbot__footer-text{margin:0;padding:0;color:var(--chatbot-color, var(--color-secondary));font-size:var(--font-size-xs);font-family:var(--font-family-base)}.chatbot__product-selector{padding:var(--spacing-3) var(--spacing-3) 0;flex-shrink:0}.chatbot__product-input{display:block;width:100%;height:24px;padding-left:var(--spacing-1);border:1px solid var(--color-border);border-radius:var(--radius-md);background:transparent;color:var(--color-body-color);font-size:var(--font-size-md);outline:none}";var x=Object.defineProperty,C=Object.getOwnPropertyDescriptor,a=(l,t,e,i)=>{for(var o=i>1?void 0:i?C(t,e):t,s=l.length-1,h;s>=0;s--)(h=l[s])&&(o=(i?h(t,e,o):h(o))||o);return i&&o&&x(t,e,o),o};exports.LogosphereChatBot=class extends n.LitElement{constructor(){super(...arguments),this.returnUri="",this.questionPrompt="",this.minimizedIconOnly=!1,this.draggable=!1,this.resizable=!1,this.products=[],this.openInitially=!1,this.showFeedbackButtons=!1,this.open=!1,this.fullscreen=!1,this.messages=[],this.isLoading=!1,this.inputText="",this.selectedProductId="",this.windowWidth=440,this.windowHeight=700,this.position={right:20,bottom:20},this.isDragging=!1,this.screenWidth=1024,this.userAtBottom=!0,this.showScrollDown=!1,this.dragStartPos={x:0,y:0},this.initialPosition={right:0,bottom:0},this.isResizing=!1,this.resizeDirection="horizontal",this.resizeStartWidth=0,this.resizeStartHeight=0,this.onWindowResize=()=>{this.screenWidth=window.innerWidth;const t=window.innerHeight-40;this.windowHeight>t&&(this.windowHeight=t)},this.onToggle=()=>{this.open=!this.open,this.open&&this.scrollToBottom(!0)},this.onClose=()=>{this.open=!1,this.fullscreen=!1},this.onToggleFullscreen=()=>{this.fullscreen=!this.fullscreen},this.onMouseMove=t=>{if(this.isDragging){const e=this.dragStartPos.x-t.clientX,i=this.dragStartPos.y-t.clientY,s=this.shadowRoot?.querySelector(".chatbot__launcher")?.getBoundingClientRect(),h=s?.width||72,g=s?.height||66;this.position={right:Math.max(0,Math.min(window.innerWidth-h,this.initialPosition.right+e)),bottom:Math.max(0,Math.min(window.innerHeight-g,this.initialPosition.bottom+i))}}else if(this.isResizing){const e=this.dragStartPos.x-t.clientX,i=this.dragStartPos.y-t.clientY;if(this.resizeDirection==="horizontal"||this.resizeDirection==="both"){const o=this.position.right<this.screenWidth/2;this.windowWidth=Math.max(300,this.resizeStartWidth+(o?e:-e))}(this.resizeDirection==="vertical"||this.resizeDirection==="both")&&(this.windowHeight=Math.max(400,this.resizeStartHeight+i))}},this.onMouseUp=t=>{this.isDragging?(this.isDragging=!1,window.removeEventListener("mousemove",this.onMouseMove),window.removeEventListener("mouseup",this.onMouseUp),Math.hypot(t.clientX-this.dragStartPos.x,t.clientY-this.dragStartPos.y)<5&&this.onToggle()):this.isResizing&&(this.isResizing=!1,window.removeEventListener("mousemove",this.onMouseMove),window.removeEventListener("mouseup",this.onMouseUp))},this.handleKeyDown=t=>{t.key==="Enter"&&!t.shiftKey&&(t.preventDefault(),this.sendMessage())},this.onInput=t=>{const e=t.target;this.inputText=e?e.value:t.detail},this.onChatScroll=()=>{const t=this.isNearBottom();this.userAtBottom=t,t&&(this.showScrollDown=!1)},this.onScrollToBottomClick=()=>{this.scrollToBottom(!0)},this.onRate=async(t,e)=>{if(!(!t.eventId||t.rating===e))try{await this.rateMessage(t.eventId,e),this.messages=this.messages.map(i=>i===t?{...i,rating:e}:i)}catch{}},this.onCopyMessage=t=>{navigator.clipboard.writeText(t)}}connectedCallback(){super.connectedCallback(),!n.isServer&&(this.screenWidth=window.innerWidth,this.windowHeight=Math.min(700,window.innerHeight-40),window.addEventListener("resize",this.onWindowResize))}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("resize",this.onWindowResize),window.removeEventListener("mousemove",this.onMouseMove),window.removeEventListener("mouseup",this.onMouseUp)}async firstUpdated(){this.selectedProductId=this._resolveInitialProduct(),this.open=this.openInitially,this.open&&await this.initConversation()}updated(t){t.has("products")&&this.handleProductUpdate(),t.has("messages")&&this.scrollToBottom(),t.has("open")&&this.open&&!this.conversationId&&this.initConversation()}_resolveInitialProduct(){if(!this.products.length)return"";const t=this.products.find(e=>e.selected);return t?t.id:this.products.length===1?this.products[0].id:""}handleProductUpdate(){if(!this.products.length)return;const t=this.products.find(i=>i.selected),e=this.products.some(i=>i.id===this.selectedProductId);t&&t.id!==this.selectedProductId?(this.selectedProductId=t.id,this.messages=[],this.conversationId=void 0,this.open&&this.initConversation()):e||(this.selectedProductId=this._resolveInitialProduct(),this.messages=[],this.conversationId=void 0,this.open&&this.initConversation()),requestAnimationFrame(()=>this.updateComboboxItems())}updateComboboxItems(){const t=this.productEl;if(!t||this.products?.length<=1)return;const e=this.products.map(o=>({value:o.id,label:o.name}));if(t.items=e,(t.selectedItems?.()||[])[0]?.value!==this.selectedProductId){const o=e.find(s=>s.value===this.selectedProductId);t.setSelected&&t.setSelected(o?[o]:[])}}async onProductChange(t){const e=t.detail?.selected?.[0]?.value;e&&e!==this.selectedProductId&&(this.selectedProductId=e)}onMouseDown(t){this.draggable&&(t.preventDefault(),this.isDragging=!0,this.dragStartPos={x:t.clientX,y:t.clientY},this.initialPosition={...this.position},window.addEventListener("mousemove",this.onMouseMove),window.addEventListener("mouseup",this.onMouseUp))}startResize(t,e){this.resizable&&(t.preventDefault(),t.stopPropagation(),this.isResizing=!0,this.resizeDirection=e,this.dragStartPos={x:t.clientX,y:t.clientY},this.resizeStartWidth=this.windowWidth,this.resizeStartHeight=this.windowHeight,window.addEventListener("mousemove",this.onMouseMove),window.addEventListener("mouseup",this.onMouseUp))}async ensureToken(t=!1){const e="logosphere_chatbot_token";if(t&&(this.assertionToken=void 0,localStorage.removeItem(e)),!t){const s=localStorage.getItem(e);if(s){this.assertionToken=s;return}}const o=await(await fetch(`${this.returnUri}/api/chat/start`)).json();if(!o.Success||!o.Data?.Token)throw new Error("Token alınamadı");this.assertionToken=o.Data.Token,localStorage.setItem(e,this.assertionToken)}async postChat(t){await this.ensureToken();const e=`${this.returnUri}/api/chat/completions`,i=()=>fetch(e,{method:"POST",headers:{"Content-Type":"application/json",client_assertion:this.assertionToken,client_assertion_type:"urn:ietf:params:oauth:client-assertion-type:jwt-bearer"},body:JSON.stringify(t)});let o=await i();if(o.status===401&&(await this.ensureToken(!0),o=await i()),!o.ok)throw new Error(`HTTP ${o.status}`);return o.json()}async initConversation(){if(!this.isLoading){this.isLoading=!0;try{await this.ensureToken();const t=await this.postChat({ChatCompletionType:"NewConversation",Context:this.selectedProductId,QuestionPrompt:this.questionPrompt});this.conversationId=t.Data.ConversationId;const e=t.Data.Choices?.[0]?.Message?.Content;e&&this.addMessage(e,"assistant",void 0,!0)}catch{this.addMessage("Bir hata oluştu, lütfen tekrar deneyiniz.","system")}finally{this.isLoading=!1}}}async sendMessage(){const t=this.inputText.trim();if(!(!t||!this.conversationId||this.isLoading)){if(!this.selectedProductId){this.addMessage("Lütfen önce bir ürün seçiniz.","system");return}this.addMessage(t,"user"),this.inputText="",this.scrollToBottom(),this.isLoading=!0;try{const e=await this.postChat({ChatCompletionType:"ConversationUpdate",Content:t,Context:this.selectedProductId,ConversationId:this.conversationId,QuestionPrompt:this.questionPrompt}),i=e.Data?.Choices?.[0]?.Message?.Content,o=e.Data?.EventId;this.addMessage(i||"Cevap alınamadı.","assistant",o)}catch{this.addMessage("Bağlantı hatası.","system")}finally{this.isLoading=!1}}}addMessage(t,e,i,o=!1){this.messages=[...this.messages,{content:t,role:e,timestamp:Date.now(),eventId:i,isWelcome:o}]}isNearBottom(t=50){const e=this.chatContainer;return e?e.scrollHeight-e.scrollTop-e.clientHeight<=t:!0}scrollToBottom(t=!1){if(!t&&!this.userAtBottom){this.showScrollDown=!0;return}setTimeout(()=>{this.chatContainer&&(this.chatContainer.scrollTop=this.chatContainer.scrollHeight,this.showScrollDown=!1,this.userAtBottom=!0)},0)}async rateMessage(t,e,i=null){await this.ensureToken();const o=`${this.returnUri}/api/chat/completion/rate`;await fetch(o,{method:"POST",headers:{"Content-Type":"application/json",client_assertion:this.assertionToken,client_assertion_type:"urn:ietf:params:oauth:client-assertion-type:jwt-bearer"},body:JSON.stringify({EventId:t,Rate:e,Comment:i})})}formatContent(t){if(!t)return"";const i=t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").split(`
2
2
  `);let o="";const s=[];let h=!1;const g=()=>{h&&(o+="</li>",h=!1)},v=d=>{for(;s.length>0&&s[s.length-1].indent>=d;)g(),o+=`</${s.pop().type}>`,s.length>0&&(h=!0)},b=()=>v(-1);for(const d of i){const p=d.match(/^(\s*)\d+\.\s+(.*)/),m=d.match(/^(\s*)[-*]\s+(.*)/);if(p||m){const c=(p?p[1]:m[1]).length,u=p?"ol":"ul",_=p?p[2]:m[2];if(s.length===0)o+=`<${u}>`,s.push({type:u,indent:c});else{const f=s[s.length-1];c>f.indent?(o+=`<${u}>`,s.push({type:u,indent:c})):c===f.indent?g():(v(c+1),s.length>0&&s[s.length-1].indent===c?g():(b(),o+=`<${u}>`,s.push({type:u,indent:c})))}o+=`<li>${_}`,h=!0}else d.trim()===""?s.length===0&&(o+="<br>"):(b(),o+=`<p>${d}</p>`)}return b(),o.replace(/\*\*(.*?)\*\*/g,"<strong>$1</strong>").replace(/\*(.*?)\*/g,"<em>$1</em>").replace(/\[([^\]]+)\]\(([^)]+)\)/g,'<a href="$2" target="_blank" rel="noopener noreferrer">$1</a>')}render(){const t=this.position.right<this.screenWidth/2;return n.html`
3
3
  <div class="chatbot">
4
4
  ${this.renderOverlay()}
@@ -3,7 +3,7 @@ import { property as d, state as l, query as y, customElement as $ } from "lit/d
3
3
  import { unsafeHTML as D } from "lit/directives/unsafe-html.js";
4
4
  import "./combobox-BR05Tgfd.js";
5
5
  import "./button-CVkIa7M0.js";
6
- import "./input-DIbZxkKp.js";
6
+ import "./input-N3Z8D7q1.js";
7
7
  import "./ui-icon-BeR-PaPg.js";
8
8
  const I = ":host{display:block;z-index:9999}.chatbot{font-family:var(--font-family-base)}.chatbot__overlay{position:fixed;inset:0;background-color:#0003;z-index:var(--z-index-modal-backdrop)}.chatbot__launcher{position:fixed;z-index:var(--z-index-modal);display:flex;align-items:center;gap:var(--spacing-4);padding-left:var(--spacing-4);padding-right:var(--spacing-4);height:66px;color:#fff;border-radius:var(--radius-xl);cursor:pointer;box-shadow:var(--shadow-md);background-color:var(--chatbot-bg, var(--color-body-bg));overflow:hidden;transition:box-shadow var(--transition-speed-fast) var(--transition-timing)}.chatbot__launcher:hover{box-shadow:var(--shadow-md)}.chatbot__launcher--draggable{cursor:move}.chatbot__launcher--hidden{visibility:hidden;width:72px;height:66px;justify-content:center;padding:0}.chatbot__launcher-icon{width:40px;height:34px;flex-shrink:0}.chatbot__launcher-text{display:flex;flex-direction:column}.chatbot__launcher-title{font-weight:var(--font-weight-semibold);font-size:var(--font-size-xl);margin:0;line-height:24px;white-space:nowrap;color:var(--color-body-color)}.chatbot__launcher-subtitle{font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);margin:0;line-height:20px;white-space:nowrap;color:var(--color-tertiary)}.chatbot__window{position:fixed;z-index:var(--z-index-modal);display:flex;flex-direction:column;box-shadow:var(--shadow-xl);border-radius:var(--radius-md);overflow:hidden;background-color:var(--chatbot-bg, var(--color-body-bg))}.chatbot__window--hidden{display:none}.chatbot__window--fullscreen{inset:80px 50px;width:auto;height:auto}.chatbot__resize-top{position:absolute;top:0;left:0;right:0;height:8px;cursor:ns-resize;z-index:50;transition:background-color var(--transition-speed-fast) var(--transition-timing)}.chatbot__resize-top:hover{background-color:#0000000d}.chatbot__resize-side{position:absolute;top:0;bottom:0;width:8px;cursor:ew-resize;z-index:50;transition:background-color var(--transition-speed-fast) var(--transition-timing)}.chatbot__resize-side:hover{background-color:#0000000d}.chatbot__resize-side--left{left:0}.chatbot__resize-side--right{right:0}.chatbot__resize-corner{position:absolute;top:0;width:16px;height:16px;z-index:50;transition:background-color var(--transition-speed-fast) var(--transition-timing)}.chatbot__resize-corner:hover{background-color:#0000001a}.chatbot__resize-corner--nwse{left:0;cursor:nwse-resize}.chatbot__resize-corner--nesw{right:0;cursor:nesw-resize}.chatbot__header{height:74px;display:flex;align-items:center;justify-content:space-between;padding-left:var(--spacing-5);padding-right:var(--spacing-4);gap:var(--spacing-4);flex-shrink:0;background-color:var(--chatbot-bg, var(--color-body-bg));border-bottom:1px solid var(--color-border)}.chatbot__header-info{display:flex;align-items:center;gap:var(--spacing-4)}.chatbot__header-logo{width:50px;height:41px}.chatbot__header-title{font-weight:var(--font-weight-semibold);font-size:var(--font-size-xl);margin:0;line-height:24px;color:var(--color-body-text)}.chatbot__header-subtitle{font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);margin:0;line-height:20px;color:var(--color-tertiary)}.chatbot__header-actions{display:flex;align-items:center;gap:var(--spacing-2)}.chatbot__body{flex:1;display:flex;flex-direction:column;background-color:var(--chatbot-bg, var(--color-body-bg));position:relative;overflow:hidden}.chatbot__product{padding:var(--spacing-3);padding-bottom:0;flex-shrink:0;margin:0 var(--spacing-3)}.chatbot__messages{flex:1;display:flex;flex-direction:column;gap:var(--spacing-3);margin-top:var(--spacing-4);padding:var(--spacing-4);overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none}.chatbot__messages::-webkit-scrollbar{display:none}.chatbot__messages-wrapper{position:relative;flex:1;display:flex;flex-direction:column;overflow:hidden}.chatbot__scroll-down{position:absolute;bottom:8px;left:50%;transform:translate(-50%);width:36px;height:36px;border-radius:var(--radius-full);background-color:var(--chatbot-bg, var(--color-body-bg));border:1px solid var(--color-border);box-shadow:var(--shadow-md);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-body-text);z-index:10;transition:background-color var(--transition-speed-fast) var(--transition-timing),box-shadow var(--transition-speed-fast) var(--transition-timing);padding:0}.chatbot__scroll-down:hover{background-color:var(--color-light);box-shadow:var(--shadow-lg)}.chatbot__message{display:flex}.chatbot__message--user{justify-content:flex-end}.chatbot__message--assistant{display:block}.chatbot__message--system{justify-content:flex-start}.chatbot__bubble{position:relative;color:var(--color-body-text);max-width:85%;border-radius:var(--radius-md);padding:var(--spacing-4);font-size:var(--font-size-sm);line-height:20px;font-weight:var(--font-weight-medium)}.chatbot__bubble--user{background-color:var(--color-primary);color:#fff;border-bottom-right-radius:0;border-top-right-radius:var(--radius-xl);border-top-left-radius:var(--radius-xl);border-bottom-left-radius:var(--radius-xl)}.chatbot__bubble--user a{color:#ffffffe6}.chatbot__bubble--assistant,.chatbot__bubble--system{background-color:var(--color-light);border-bottom-left-radius:0;border-top-right-radius:var(--radius-xl);border-top-left-radius:var(--radius-xl);border-bottom-right-radius:var(--radius-xl)}.chatbot__message-content p{margin:0}.chatbot__message-content ol{list-style-type:decimal;margin:0;padding-left:var(--spacing-5)}.chatbot__message-content ul{list-style-type:disc;margin:0;padding-left:var(--spacing-5)}.chatbot__message-content li>ol,.chatbot__message-content li>ul{margin-top:var(--spacing-1);margin-bottom:var(--spacing-1)}.chatbot__message-content ol ol{list-style-type:lower-alpha}.chatbot__message-content ol ol ol{list-style-type:lower-roman}.chatbot__message-content ul ul{list-style-type:circle}.chatbot__message-content ul ul ul{list-style-type:square}.chatbot__message-content li{padding-left:var(--spacing-1)}.chatbot__message-content a{color:var(--color-primary);text-decoration:underline;transition:color var(--transition-speed-fast) var(--transition-timing)}.chatbot__message-content a:hover{color:var(--color-primary-hover)}.chatbot__feedback{display:flex;align-items:center;gap:var(--spacing-2);padding-top:var(--spacing-2)}.chatbot__typing-wrapper{display:flex;justify-content:flex-start}.chatbot__typing{background-color:var(--color-light);padding:var(--spacing-3);border-radius:var(--radius-xl);border-bottom-left-radius:0;display:inline-flex;align-items:center;gap:2px}.chatbot__typing-dot{display:inline-block;width:6px;height:6px;background-color:var(--color-gray-300);border-radius:var(--radius-full);animation:chatbot-typing 1.4s infinite ease-in-out both;margin:0 2px}.chatbot__typing-dot:nth-child(1){animation-delay:-.32s}.chatbot__typing-dot:nth-child(2){animation-delay:-.16s}@keyframes chatbot-typing{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}.chatbot__input-area{padding:var(--spacing-4);padding-top:var(--spacing-2);padding-bottom:var(--spacing-1);background-color:var(--chatbot-bg, var(--color-body-bg))}.chatbot__input-wrapper{position:relative;display:flex;align-items:center;gap:var(--spacing-2);background-color:var(--color-light);border-radius:var(--radius-md);padding:var(--spacing-2);border:1px solid transparent;transition:background-color var(--transition-speed-fast) var(--transition-timing),border-color var(--transition-speed-fast) var(--transition-timing)}.chatbot__input-wrapper:focus-within{background-color:var(--chatbot-bg, var(--color-body-bg));border-color:var(--color-border)}.chatbot__input{flex:1;background:transparent;border:none;outline:none;font-family:var(--font-family-base);font-size:var(--font-size-sm);color:var(--color-body-text)}.chatbot__input::placeholder{color:var(--color-tertiary)}.chatbot__input:disabled{opacity:.5;cursor:not-allowed}.chatbot__footer{display:flex;align-items:center;justify-content:center;padding-bottom:var(--spacing-2)}.chatbot__footer-text{margin:0;padding:0;color:var(--chatbot-color, var(--color-secondary));font-size:var(--font-size-xs);font-family:var(--font-family-base)}.chatbot__product-selector{padding:var(--spacing-3) var(--spacing-3) 0;flex-shrink:0}.chatbot__product-input{display:block;width:100%;height:24px;padding-left:var(--spacing-1);border:1px solid var(--color-border);border-radius:var(--radius-md);background:transparent;color:var(--color-body-color);font-size:var(--font-size-md);outline:none}";
9
9
  var M = Object.defineProperty, P = Object.getOwnPropertyDescriptor, n = (t, e, r, i) => {
package/dist/chatbot.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./chatbot-UtlXazeu.cjs");Object.defineProperty(exports,"LogosphereChatBot",{enumerable:!0,get:()=>e.LogosphereChatBot});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./chatbot-BAou4THb.cjs");Object.defineProperty(exports,"LogosphereChatBot",{enumerable:!0,get:()=>e.LogosphereChatBot});
package/dist/chatbot.js CHANGED
@@ -1,4 +1,4 @@
1
- import { L as r } from "./chatbot-hRX1TlL2.js";
1
+ import { L as r } from "./chatbot-BRfqXYYt.js";
2
2
  export {
3
3
  r as LogosphereChatBot
4
4
  };
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./ui-icon-DWl7I5BQ.cjs"),o=require("./button-vdNReBMi.cjs"),n=require("./badge-CKSG_MyA.cjs"),u=require("./checkbox-BAbPDN6x.cjs"),i=require("./formfield-JXiv9mvJ.cjs"),c=require("./slider-DSRs5uhl.cjs"),a=require("./switch-Do6SCkPJ.cjs"),p=require("./breadcrumb-BOuCLUJh.cjs"),b=require("./card-DmQRNKtk.cjs"),s=require("./input-tZU_snSC.cjs"),d=require("./pagination-Nnzacqdo.cjs"),l=require("./popover-CrXUbUR-.cjs"),g=require("./stepper-ZOMaU6aZ.cjs"),m=require("./split-button-BpffPlVg.cjs"),P=require("./collapse-CbRE8ABx.cjs"),f=require("./input-group-C6sA1lzj.cjs"),q=require("./accordion-CYuCj7nB.cjs"),y=require("./chip-group-D4DwnC37.cjs"),j=require("./text-area-D_TYL4_q.cjs"),O=require("./timepicker-DFIhvxai.cjs"),h=require("./chatbot-UtlXazeu.cjs"),L=require("./calendar-DZJM5Tyu.cjs"),C=require("./combobox-BAa3UAQs.cjs"),T=require("./datepicker-BWE4qDJM.cjs"),M=require("./drawer-CRu4G2zu.cjs"),S=require("./download-manager-DDeTYRPs.cjs"),r=require("./leftmenu-Bb7sDb6y.cjs"),B=require("./modal-g3KbWncV.cjs"),e=require("./toast-container-D2dyP20J.cjs"),k=require("./tab-BvRVHpWs.cjs"),w=require("./tree-menu-DDQ_DYl7.cjs");exports.UiIcon=t.UiIcon;Object.defineProperty(exports,"Button",{enumerable:!0,get:()=>o.Button});Object.defineProperty(exports,"LogosphereBadge",{enumerable:!0,get:()=>n.LogosphereBadge});Object.defineProperty(exports,"Checkbox",{enumerable:!0,get:()=>u.Checkbox});Object.defineProperty(exports,"FormField",{enumerable:!0,get:()=>i.FormField});Object.defineProperty(exports,"Slider",{enumerable:!0,get:()=>c.Slider});Object.defineProperty(exports,"Switch",{enumerable:!0,get:()=>a.Switch});Object.defineProperty(exports,"Breadcrumb",{enumerable:!0,get:()=>p.Breadcrumb});Object.defineProperty(exports,"Card",{enumerable:!0,get:()=>b.Card});Object.defineProperty(exports,"LogosphereInput",{enumerable:!0,get:()=>s.LogosphereInput});exports.Pagination=d.Pagination;Object.defineProperty(exports,"Popover",{enumerable:!0,get:()=>l.Popover});Object.defineProperty(exports,"Stepper",{enumerable:!0,get:()=>g.Stepper});Object.defineProperty(exports,"SplitButton",{enumerable:!0,get:()=>m.SplitButton});Object.defineProperty(exports,"Collapse",{enumerable:!0,get:()=>P.Collapse});Object.defineProperty(exports,"InputGroup",{enumerable:!0,get:()=>f.InputGroup});Object.defineProperty(exports,"Accordion",{enumerable:!0,get:()=>q.Accordion});Object.defineProperty(exports,"ChipGroup",{enumerable:!0,get:()=>y.ChipGroup});Object.defineProperty(exports,"TextArea",{enumerable:!0,get:()=>j.TextArea});Object.defineProperty(exports,"TimePicker",{enumerable:!0,get:()=>O.TimePicker});Object.defineProperty(exports,"LogosphereChatBot",{enumerable:!0,get:()=>h.LogosphereChatBot});Object.defineProperty(exports,"LogosphereCalendar",{enumerable:!0,get:()=>L.LogosphereCalendar});Object.defineProperty(exports,"Combobox",{enumerable:!0,get:()=>C.Combobox});Object.defineProperty(exports,"LogosphereDatePicker",{enumerable:!0,get:()=>T.LogosphereDatePicker});Object.defineProperty(exports,"Drawer",{enumerable:!0,get:()=>M.Drawer});Object.defineProperty(exports,"DownloadManager",{enumerable:!0,get:()=>S.DownloadManager});Object.defineProperty(exports,"LeftMenu",{enumerable:!0,get:()=>r.LeftMenu});exports.isLeftMenuGroup=r.isLeftMenuGroup;exports.Modal=B.Modal;Object.defineProperty(exports,"LogosphereToast",{enumerable:!0,get:()=>e.LogosphereToast});Object.defineProperty(exports,"LogosphereToastContainer",{enumerable:!0,get:()=>e.LogosphereToastContainer});exports.ToastService=e.ToastService;Object.defineProperty(exports,"LogosphereTab",{enumerable:!0,get:()=>k.LogosphereTab});Object.defineProperty(exports,"TreeMenu",{enumerable:!0,get:()=>w.TreeMenu});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./ui-icon-DWl7I5BQ.cjs"),o=require("./button-vdNReBMi.cjs"),n=require("./badge-CKSG_MyA.cjs"),u=require("./checkbox-BAbPDN6x.cjs"),i=require("./formfield-JXiv9mvJ.cjs"),a=require("./slider-DSRs5uhl.cjs"),c=require("./switch-Do6SCkPJ.cjs"),b=require("./breadcrumb-BOuCLUJh.cjs"),p=require("./card-DmQRNKtk.cjs"),s=require("./input-DyLKo7h6.cjs"),d=require("./pagination-Nnzacqdo.cjs"),l=require("./popover-CrXUbUR-.cjs"),g=require("./stepper-ZOMaU6aZ.cjs"),m=require("./split-button-BpffPlVg.cjs"),P=require("./collapse-CbRE8ABx.cjs"),f=require("./input-group-C6sA1lzj.cjs"),q=require("./accordion-CYuCj7nB.cjs"),y=require("./chip-group-D4DwnC37.cjs"),j=require("./text-area-D_TYL4_q.cjs"),O=require("./timepicker-Bpf2d4Nn.cjs"),h=require("./chatbot-BAou4THb.cjs"),L=require("./calendar-DZJM5Tyu.cjs"),C=require("./combobox-BAa3UAQs.cjs"),T=require("./datepicker-BWE4qDJM.cjs"),M=require("./drawer-CRu4G2zu.cjs"),S=require("./download-manager-DDeTYRPs.cjs"),r=require("./leftmenu-DiKo8iud.cjs"),B=require("./modal-g3KbWncV.cjs"),k=require("./table-CpzsQ87V.cjs"),e=require("./toast-container-D2dyP20J.cjs"),w=require("./tab-BvRVHpWs.cjs"),x=require("./tree-menu-DDQ_DYl7.cjs");exports.UiIcon=t.UiIcon;Object.defineProperty(exports,"Button",{enumerable:!0,get:()=>o.Button});Object.defineProperty(exports,"LogosphereBadge",{enumerable:!0,get:()=>n.LogosphereBadge});Object.defineProperty(exports,"Checkbox",{enumerable:!0,get:()=>u.Checkbox});Object.defineProperty(exports,"FormField",{enumerable:!0,get:()=>i.FormField});Object.defineProperty(exports,"Slider",{enumerable:!0,get:()=>a.Slider});Object.defineProperty(exports,"Switch",{enumerable:!0,get:()=>c.Switch});Object.defineProperty(exports,"Breadcrumb",{enumerable:!0,get:()=>b.Breadcrumb});Object.defineProperty(exports,"Card",{enumerable:!0,get:()=>p.Card});Object.defineProperty(exports,"LogosphereInput",{enumerable:!0,get:()=>s.LogosphereInput});exports.Pagination=d.Pagination;Object.defineProperty(exports,"Popover",{enumerable:!0,get:()=>l.Popover});Object.defineProperty(exports,"Stepper",{enumerable:!0,get:()=>g.Stepper});Object.defineProperty(exports,"SplitButton",{enumerable:!0,get:()=>m.SplitButton});Object.defineProperty(exports,"Collapse",{enumerable:!0,get:()=>P.Collapse});Object.defineProperty(exports,"InputGroup",{enumerable:!0,get:()=>f.InputGroup});Object.defineProperty(exports,"Accordion",{enumerable:!0,get:()=>q.Accordion});Object.defineProperty(exports,"ChipGroup",{enumerable:!0,get:()=>y.ChipGroup});Object.defineProperty(exports,"TextArea",{enumerable:!0,get:()=>j.TextArea});Object.defineProperty(exports,"TimePicker",{enumerable:!0,get:()=>O.TimePicker});Object.defineProperty(exports,"LogosphereChatBot",{enumerable:!0,get:()=>h.LogosphereChatBot});Object.defineProperty(exports,"LogosphereCalendar",{enumerable:!0,get:()=>L.LogosphereCalendar});Object.defineProperty(exports,"Combobox",{enumerable:!0,get:()=>C.Combobox});Object.defineProperty(exports,"LogosphereDatePicker",{enumerable:!0,get:()=>T.LogosphereDatePicker});Object.defineProperty(exports,"Drawer",{enumerable:!0,get:()=>M.Drawer});Object.defineProperty(exports,"DownloadManager",{enumerable:!0,get:()=>S.DownloadManager});Object.defineProperty(exports,"LeftMenu",{enumerable:!0,get:()=>r.LeftMenu});exports.isLeftMenuGroup=r.isLeftMenuGroup;exports.Modal=B.Modal;Object.defineProperty(exports,"Table",{enumerable:!0,get:()=>k.Table});Object.defineProperty(exports,"LogosphereToast",{enumerable:!0,get:()=>e.LogosphereToast});Object.defineProperty(exports,"LogosphereToastContainer",{enumerable:!0,get:()=>e.LogosphereToastContainer});exports.ToastService=e.ToastService;Object.defineProperty(exports,"LogosphereTab",{enumerable:!0,get:()=>w.LogosphereTab});Object.defineProperty(exports,"TreeMenu",{enumerable:!0,get:()=>x.TreeMenu});
package/dist/index.d.ts CHANGED
@@ -26,6 +26,7 @@ export * from "./organisms/Drawer/index.js";
26
26
  export * from "./organisms/DownloadManager/index.js";
27
27
  export * from "./organisms/LeftMenu/index.js";
28
28
  export * from "./organisms/Modal/index.js";
29
+ export * from "./organisms/Table/index.js";
29
30
  export * from "./organisms/Toast/index.js";
30
31
  export * from "./organisms/Tab/index.js";
31
32
  export * from "./organisms/TreeMenu/index.js";
package/dist/index.js CHANGED
@@ -4,12 +4,12 @@ import { L as s } from "./badge-BhINg1p5.js";
4
4
  import { C as x } from "./checkbox-CTfbav6M.js";
5
5
  import { F as L } from "./formfield-ss2mFweu.js";
6
6
  import { S as n } from "./slider-ntLRajQa.js";
7
- import { S as h } from "./switch-uYVuohJ-.js";
8
- import { B as u } from "./breadcrumb-BeJqq-5C.js";
7
+ import { S as T } from "./switch-uYVuohJ-.js";
8
+ import { B as g } from "./breadcrumb-BeJqq-5C.js";
9
9
  import { C as c } from "./card-C7xXMV3h.js";
10
- import { L as S } from "./input-DIbZxkKp.js";
10
+ import { L as l } from "./input-N3Z8D7q1.js";
11
11
  import { P as B } from "./pagination-CjXvpE2j.js";
12
- import { P } from "./popover-M5ZcS5rj.js";
12
+ import { P as M } from "./popover-M5ZcS5rj.js";
13
13
  import { S as D } from "./stepper-CZhwgLNp.js";
14
14
  import { S as k } from "./split-button-BdBweoip.js";
15
15
  import { C as A } from "./collapse-DY6SJ9jS.js";
@@ -17,21 +17,22 @@ import { I as G } from "./input-group-DUPlrpug.js";
17
17
  import { A as U } from "./accordion-cDabqwu6.js";
18
18
  import { C as q } from "./chip-group-DzfOd6Vw.js";
19
19
  import { T as z } from "./text-area-1rALZ0iy.js";
20
- import { T as H } from "./timepicker-C22yBR_J.js";
21
- import { L as K } from "./chatbot-hRX1TlL2.js";
20
+ import { T as H } from "./timepicker-B9l6HN-d.js";
21
+ import { L as K } from "./chatbot-BRfqXYYt.js";
22
22
  import { L as O } from "./calendar-C71sj3Ki.js";
23
23
  import { C as R } from "./combobox-BR05Tgfd.js";
24
24
  import { L as W } from "./datepicker-BFYWQRrJ.js";
25
25
  import { D as Y } from "./drawer-DhuBPWHP.js";
26
26
  import { D as _ } from "./download-manager-BPg-6Qfg.js";
27
- import { L as oo, i as ro } from "./leftmenu-CCyp8q_q.js";
27
+ import { L as oo, i as ro } from "./leftmenu-DlU_G4Sj.js";
28
28
  import { M as ao } from "./modal-vSjEpYrG.js";
29
- import { L as po, a as so, T as mo } from "./toast-container-C5qYjInG.js";
30
- import { L as fo } from "./tab-Byh4UgFB.js";
31
- import { T as io } from "./tree-menu-BZ7aBC7R.js";
29
+ import { T as po } from "./table-3-P_g6-i.js";
30
+ import { L as mo, a as xo, T as fo } from "./toast-container-C5qYjInG.js";
31
+ import { L as io } from "./tab-Byh4UgFB.js";
32
+ import { T as Co } from "./tree-menu-BZ7aBC7R.js";
32
33
  export {
33
34
  U as Accordion,
34
- u as Breadcrumb,
35
+ g as Breadcrumb,
35
36
  t as Button,
36
37
  c as Card,
37
38
  x as Checkbox,
@@ -47,21 +48,22 @@ export {
47
48
  O as LogosphereCalendar,
48
49
  K as LogosphereChatBot,
49
50
  W as LogosphereDatePicker,
50
- S as LogosphereInput,
51
- fo as LogosphereTab,
52
- po as LogosphereToast,
53
- so as LogosphereToastContainer,
51
+ l as LogosphereInput,
52
+ io as LogosphereTab,
53
+ mo as LogosphereToast,
54
+ xo as LogosphereToastContainer,
54
55
  ao as Modal,
55
56
  B as Pagination,
56
- P as Popover,
57
+ M as Popover,
57
58
  n as Slider,
58
59
  k as SplitButton,
59
60
  D as Stepper,
60
- h as Switch,
61
+ T as Switch,
62
+ po as Table,
61
63
  z as TextArea,
62
64
  H as TimePicker,
63
- mo as ToastService,
64
- io as TreeMenu,
65
+ fo as ToastService,
66
+ Co as TreeMenu,
65
67
  e as UiIcon,
66
68
  ro as isLeftMenuGroup
67
69
  };