Kullanıcı Kılavuzu

Widgets

10/2/26
Widgets

Widget’lar, Kuika Designer için özel ve yeniden kullanılabilir UI elementleri oluşturmanıza olanak tanır. Bu kılavuz, kendi widget paketlerinizi oluşturmak, geliştirmek ve yayınlamak için bilmeniz gereken her şeyi kapsar.

Widget'lar yalnızca web uygulamalarda kullanılabilir.

Önkoşullar

Başlamadan önce, aşağıdakilerin yüklü olduğundan emin olun:

  • Node.js v24 LTS tavsiye edilir
  • npm, yarn, pnpm veya bun paket yöneticisi
  • Bir kod editörü

İlk Widget Paketinizi Oluşturma

İlk widget paketinizi oluşturmanın en hızlı yolu create-kuika-widget CLI aracını kullanmaktır:

npx create-kuika-widget

Bu etkileşimli sihirbaz sizi şu adımlarda yönlendirecektir:

  1. Widget Pack Name - Pack’iniz için insan tarafından okunabilir bir ad (örn. "My Dashboard Widgets")
  2. Company - Şirket isminiz - yoksa kendi ad soyadınız (örn. "acme")
  3. Framework - React, Vue, Svelte, Angular veya AngularJS arasından seçin.
  4. Stylesheet - CSS, SCSS veya Tailwind CSS
  5. Package Manager - npm, yarn, pnpm veya bun
  6. Git Initialization - İsteğe bağlı git repository kurulumu

Hızlı Başlangıç Örneği

npx create-kuika-widget
# Widget Pack Name => My Custom Buttons
# Company => Acme
# Framework => React
# Stylesheet => Tailwind
# Package Manager => Yarn
# Git Initialization => No

# Proje klasörüne gidin
cd my-custom-buttons

# Geliştirme sunucusunu başlatın
yarn dev
Bu kılavuz varsayılan paket yöneticisi olarak yarn kullanır. Proje oluşturma sırasında farklı bir paket yöneticisi seçtiyseniz (npm, pnpm veya bun), paket yöneticinizdeki karşılığını kullanmalısınız.. Örneğin: npm run dev, pnpm dev veya bun dev.

Proje Yapısı

Proje oluşturulduktan sonra projeniz şu yapıya sahip olacaktır:

my-dashboard-widgets/
├── src/
│   ├── Components/           # Widget bileşenleriniz
│   │   ├── MyWidget/
│   │   │   ├── MyWidget.tsx  # Bileşen implementasyonu
│   │   │   └── MyWidget.css  # Bileşen stilleri
│   │   └── ...
│   ├── App.tsx               # Yerel playground (export edilmez)
│   └── index.tsx             # Entry point (export edilmez)
├── kuika.manifest.ts         # Widget pack konfigürasyonu (GEREKLİ)
├── package.json              # Bağımlılıklar ve script’ler
├── tsconfig.json             # TypeScript konfigürasyonu
└── dist/                     # Build çıktısı (oluşturulur)

Önemli Notlar

  • kuika.manifest.ts ana konfigurasyon dosyasıdır. 
  • src/App.tsx test için yerel playground’unuzdur - yayınlanan widget pack’e dahil edilmez.
  • src/Components/ widget’larınız için önerilen konumdur.

Manifest Dosyası

kuika.manifest.ts dosyası widget pack’inizin kalbidir. Hangi bileşenlerin export edildiğini ve Kuika Designer’da nasıl göründüklerini tanımlar.

Temel Yapı

import { defineWidgetComponent, defineWidgetManifest } from "@kuika/sdk/react";
import { MyWidget } from "./src/Components/MyWidget/MyWidget";
import { AnotherWidget } from "./src/Components/AnotherWidget/AnotherWidget";

export default defineWidgetManifest({
  projectId: "com.mycompany.my-dashboard-widgets",
  name: "My Dashboard Widgets",
  version: "1.0.0",
  components: [
    defineWidgetComponent(MyWidget, { title: "My Widget" }),
    defineWidgetComponent(AnotherWidget, { title: "Another Widget" })
  ]
});

Yapılandırma Seçenekleri

  • projectId (Required): Ters domain gösteriminde benzersiz tanımlayıcıdır (örn. com.acme.widgets).
  • name (Required): Designer’da gösterilen, insan tarafından okunabilir addır.
  • version (Required): Semantik versiyon bilgisini belirtir (örn. 1.0.0, 2.1.3).
  • components (Required): Export edilecek bileşenlerden oluşan dizidir.

Bileşen Kaydı

Her bileşen defineWidgetComponent() kullanılarak kaydedilir:

defineWidgetComponent(ComponentReference, {
  title: "Display Title"  // Bu, Designer’ın bileşen paletinde görünür
})

Bileşenler Oluşturma

React, Vue, Angular ve AngularJS framework’leri için bileşen prop’larınız tanımlarken TypeScript kullanmanız gerekir. Kuika, prop adlarını ve tiplerini doğrudan TypeScript tip tanımlarınızdan çıkararak Designer’da gösterir. Uygun TypeScript tipleri olmadan prop’larınız Designer’da görünmeyebilir veya yanlış gözükebilir.

React Bileşenleri

TypeScript prop’larıyla standart React fonksiyonel bileşenleri oluşturun:

// src/Components/Counter/Counter.tsx
import { useState } from "react";
import "./Counter.css";

// TypeScript type definition - Kuika'nın prop'ları tespit etmesi için GEREKLİDİR
type CounterProps = {
  initialValue?: number;      // Varsayılanı olan opsiyonel prop
  step?: number;              // Varsayılanı olan opsiyonel prop
  label?: string;             // Görünen etiket
};

export const Counter = ({
  initialValue = 0,
  step = 1,
  label = "Count"
}: CounterProps) => {
  const [count, setCount] = useState(initialValue);

  return (
    <div className="counter">
      <span className="counter__label">{label}</span>
      <button onClick={() => setCount(count - step)}>-</button>
      <span>{count}</span>
      <button onClick={() => setCount(count + step)}>+</button>
    </div>
  );
};

Vue Components

<!-- src/Components/Counter/Counter.vue -->
<script setup lang="ts">
import { ref } from 'vue';

// TypeScript type definition - Kuika'nın prop'ları tespit etmesi için GEREKLİDİR
const props = withDefaults(defineProps<{
  initialValue?: number;
  step?: number;
  label?: string;
}>(), {
  initialValue: 0,
  step: 1,
  label: "Count"
});

const count = ref(props.initialValue);
</script>

<template>
  <div class="counter">
    <span class="counter__label">{{ label }}</span>
    <button @click="count -= props.step">-</button>
    <span>{{ count }}</span>
    <button @click="count += props.step">+</button>
  </div>
</template>

TypeScript Gereksinimleri

Kuika, TypeScript tip tanımlarınızı şunlar için kullanır:

  1. Prop adlarını çıkarmak - Tipinizdeki her özellik Designer’da yapılandırılabilir bir prop olur.
  2. Prop tiplerini belirlemek - Designer, tipe göre uygun input kontrollerini gösterir.
  3. Opsiyonel prop’ları tanımlamak - ? ile işaretlenen prop’lar opsiyonel olarak gösterilir.

Desteklenen Prop Türleri

Kuika, TypeScript tanımlarınızdan şu prop tiplerini otomatik olarak tespit eder:

  • Primitifler: string, number, boolean
  • Diziler: string[], number[], YourType[]
  • Objeler: Interface veya type tanımları
  • Union tipler: "option1" | "option2" veya 1 | 2 | 3
  • Opsiyonel prop’lar: propName?: Type

Prop En İyi Pratikler

  1. Her zaman TypeScript kullanın - Tüm prop’lar için açık type tanımları yapın.
  2. type veya interface kullanın - type Props = {...} veya interface Props {...} ikisi de çalışır.
  3. Varsayılanlar sağlayın - Opsiyonel prop’ların mantıklı varsayılanları olmalıdır.
  4. Prop’ları basit tutun - Designer desteği için mümkün olduğunca primitif tipleri kullanın.

AngularJS Bileşenleri

AngularJS widget’ları diğer framework’lerden farklı çalışır. AngularJS, bileşen tanımları için TypeScript kullanmadığından, prop’ları manifest dosyasında açıkça tanımlamanız gerekir.

AngularJS Manifest Yapısı

import { defineWidgetComponent, defineWidgetManifest } from "@kuika/sdk/angularjs";

export default defineWidgetManifest({
  projectId: "com.mycompany.angularjs-widgets",
  name: "My AngularJS Widgets",
  version: "1.0.0",
  components: [
    defineWidgetComponent("counter", {
      title: "Counter",
      props: {
        initialValue: { type: "number" },
        step: { type: "number" },
        label: { type: "string" }
      }
    }),
    defineWidgetComponent("statusBadge", {
      title: "Status Badge",
      props: {
        status: {
          type: "string",
          required: true,
          unionValues: ["active", "inactive", "pending"]
        },
        showIcon: { type: "boolean" }
      }
    })
  ]
});

AngularJS için Temel Farklılıklar

  1. Bileşen Adı String Olarak - Direktif/bileşen adını referans değil string olarak geçin.
  2. Prop’lar Manifest’te Tanımlanır - Tüm prop’lar manifest içinde açıkça tanımlanmalıdır.
  3. Tip Açıklamaları Gereklidir - Her prop için type belirtin.

AngularJS Prop Şeması

  • type (Required): Şu değerlerden biri olmalıdır: "string", "number", "boolean", "function".
  • required (Optional): Prop zorunluysa true olarak ayarlanır.
  • unionValues (Optional): Enum benzeri prop’lar için izin verilen string değerlerden oluşan dizidir.
  • parameters (Optional): Function tipindeki prop’lar için parametre tanımlarından oluşan dizidir.

AngularJS'de İşlev Özellikleri

defineWidgetComponent("myWidget", {
  title: "My Widget",
  props: {
    onSubmit: {
      type: "function",
      parameters: [
        { name: "data", type: "object" },
        { name: "isValid", type: "boolean" }
      ]
    }
  }
})

Geliştirme Akışı

Kullanılabilir Komutlar

  • yarn dev: Hot reload ile geliştirme sunucusunu başlatır.
  • yarn build: Production build oluşturur.
  • yarn run publish: Oluşturulan paketi Kuika platformuna yükler.

Development Server

Development server şunları sağlar:

  • Hot module replacement
  • Otomatik framework tespiti
  • Tailwind CSS v4 desteği (tespit edilirse)
  • http://localhost:5173 üzerinde yerel playground (port değişebilir)
yarn dev

Bileşenlerinizi Test Etme

App.tsx (veya eşdeğeri) dosyasını yerel bir playground olarak kullanın:

// src/App.tsx
import { Counter } from "./Components/Counter/Counter";

function App() {
  return (
    <div>
      <h1>Widget Playground</h1>
      <Counter initialValue={10} step={5} label="Items" />
    </div>
  );
}

export default App;

Bu playground dosyası yayınlanan Widget Pack’e DAHİL EDİLMEZ.

Oluşturma ve Yayınlama

Yayınlamadan önce build’inizi her zaman yerelde test edin:

yarn build

Bu, dist/ klasöründe asset-manifest.json ile birlikte optimize edilmiş çıktılar oluşturur.

Yayınlamadan önce olası build hatalarını erken yakalamak için her zaman yarn build çalıştırın.

Kuika'da yayınlama

yarn run publish

Publish komutu şunları yapacaktır:

  1. Kimlik bilgilerini ister - Kuika platform e-postanızı ve şifrenizi girin.
  2. Workspace seçimi - Hangi workspace’e yayınlayacağınızı seçin.
  3. Yükler - Paketi Kuika platformuna gönderir.
  4. Doğrular - Sunucu, Widget Pack’inizi doğrular ve sorunları raporlar.

On-Premises Deployments: On-premises bir Kuika kurulumu kullanıyorsanız, API endpoint’inizi belirtmek için --api-url bayrağını kullanın:

yarn run kuika publish --api-url https://your-kuika-instance.com

Kuika UI Design’da Widget Kullanımı

  1. Kuika platformunu açın.
  2. Widget kullanacağınız projeyi seçin.
  3. Gerekli adımları tamamlayarak teknik altyapının hazır olduğundan emin olun. Bu işlemler tamamlandıktan sonra widget’lar kullanılabilir hale gelir.
  4. UI Design modülünü açın.
  1. Sol panelde yer alan Widgets sekmesine tıklayın.
  2. Widgets alanından kullanmak istediğiniz elementi sürükleyip tasarım alanına bırakın.
  1. Sağ tarafta bulunan Properties paneli üzerinden elementin özelliklerini düzenleyebilir, Add Action butonu ile tetikleyici aksiyonlar ekleyebilirsiniz.
Element özellikleri ve eklenebilecek aksiyonlar, teknik yapılandırma sırasında tanımlanır. Bu yapılandırmalar yapılmadığı sürece ilgili özellikler veya aksiyonlar görüntülenmez.
No items found.

İlişkili diğer içerikler

No items found.

Sözlük

No items found.

Alt Başlıklar