bc-field-string

Single-line text input with validation, prefix/suffix, clearable, character count.

bc-field-password

bc-field-text

bc-field-smalltext

📦 Framework Examples (4 components)
<!-- 4 components — Vanilla HTML -->
<!-- bc-field-string -->
<bc-field-string name="username" label="Username" placeholder="Enter..." required clearable></bc-field-string>

<!-- bc-field-password -->
<bc-field-password name="pw" label="Password" required min-length="8" show-reveal></bc-field-password>

<!-- bc-field-text -->
<bc-field-text name="bio" label="Bio" rows="4" max-length="500" show-count></bc-field-text>

<!-- bc-field-smalltext -->
<bc-field-smalltext name="note" label="Note" rows="2"></bc-field-smalltext>
import '@bitcode-framework/ui-web-components/bc-field-string, @bitcode-framework/ui-web-components/bc-field-password, @bitcode-framework/ui-web-components/bc-field-text, @bitcode-framework/ui-web-components/bc-field-smalltext';
// All bc-* tags work as JSX — they're standard Web Components
// Set props via attributes or ref

export default function Demo() {
  return (
    <>
      {/* bc-field-string */}
      <bc-field-string name="username" label="Username" placeholder="Enter..." required clearable={true}></bc-field-string>

      {/* bc-field-password */}
      <bc-field-password name="pw" label="Password" required min-length="8" show-reveal></bc-field-password>

      {/* bc-field-text */}
      <bc-field-text name="bio" label="Bio" rows="4" max-length="500" show-count></bc-field-text>

      {/* bc-field-smalltext */}
      <bc-field-smalltext name="note" label="Note" rows="2"></bc-field-smalltext>
    </>
  );
}
<template>
  <!-- bc-field-string -->
  <bc-field-string name="username" label="Username" placeholder="Enter..." required clearable></bc-field-string>

  <!-- bc-field-password -->
  <bc-field-password name="pw" label="Password" required min-length="8" show-reveal></bc-field-password>

  <!-- bc-field-text -->
  <bc-field-text name="bio" label="Bio" rows="4" max-length="500" show-count></bc-field-text>

  <!-- bc-field-smalltext -->
  <bc-field-smalltext name="note" label="Note" rows="2"></bc-field-smalltext>
</template>

<script setup>
// No import needed — bc-* components are registered globally
// via '@bitcode-framework/ui-web-components' loader in main.ts
</script>
<!-- app-demo.component.html -->
<!-- Add CUSTOM_ELEMENTS_SCHEMA to your module -->
<!-- bc-field-string -->
<bc-field-string name="username" label="Username" placeholder="Enter..." required clearable></bc-field-string>

<!-- bc-field-password -->
<bc-field-password name="pw" label="Password" required min-length="8" show-reveal></bc-field-password>

<!-- bc-field-text -->
<bc-field-text name="bio" label="Bio" rows="4" max-length="500" show-count></bc-field-text>

<!-- bc-field-smalltext -->
<bc-field-smalltext name="note" label="Note" rows="2"></bc-field-smalltext>

bc-field-integer

bc-field-float

bc-field-decimal

bc-field-currency

bc-field-percent

📦 Framework Examples (5 components)
<!-- 5 components — Vanilla HTML -->
<!-- bc-field-integer -->
<bc-field-integer name="qty" label="Quantity" min="0" max="999" step="1"></bc-field-integer>

<!-- bc-field-float -->
<bc-field-float name="weight" label="Weight" precision="2" suffix-text="kg"></bc-field-float>

<!-- bc-field-decimal -->
<bc-field-decimal name="price" label="Price" precision="2" prefix-text="quot;></bc-field-decimal>

<!-- bc-field-currency -->
<bc-field-currency name="amount" label="Amount" currency="USD"></bc-field-currency>

<!-- bc-field-percent -->
<bc-field-percent name="discount" label="Discount" min="0" max="100"></bc-field-percent>
import '@bitcode-framework/ui-web-components/bc-field-integer, @bitcode-framework/ui-web-components/bc-field-float, @bitcode-framework/ui-web-components/bc-field-decimal, @bitcode-framework/ui-web-components/bc-field-currency, @bitcode-framework/ui-web-components/bc-field-percent';
// All bc-* tags work as JSX — they're standard Web Components
// Set props via attributes or ref

export default function Demo() {
  return (
    <>
      {/* bc-field-integer */}
      <bc-field-integer name="qty" label="Quantity" min="0" max="999" step="1"></bc-field-integer>

      {/* bc-field-float */}
      <bc-field-float name="weight" label="Weight" precision="2" suffix-text="kg"></bc-field-float>

      {/* bc-field-decimal */}
      <bc-field-decimal name="price" label="Price" precision="2" prefix-text="quot;></bc-field-decimal>

      {/* bc-field-currency */}
      <bc-field-currency name="amount" label="Amount" currency="USD"></bc-field-currency>

      {/* bc-field-percent */}
      <bc-field-percent name="discount" label="Discount" min="0" max="100"></bc-field-percent>
    </>
  );
}
<template>
  <!-- bc-field-integer -->
  <bc-field-integer name="qty" label="Quantity" min="0" max="999" step="1"></bc-field-integer>

  <!-- bc-field-float -->
  <bc-field-float name="weight" label="Weight" precision="2" suffix-text="kg"></bc-field-float>

  <!-- bc-field-decimal -->
  <bc-field-decimal name="price" label="Price" precision="2" prefix-text="quot;></bc-field-decimal>

  <!-- bc-field-currency -->
  <bc-field-currency name="amount" label="Amount" currency="USD"></bc-field-currency>

  <!-- bc-field-percent -->
  <bc-field-percent name="discount" label="Discount" min="0" max="100"></bc-field-percent>
</template>

<script setup>
// No import needed — bc-* components are registered globally
// via '@bitcode-framework/ui-web-components' loader in main.ts
</script>
<!-- app-demo.component.html -->
<!-- Add CUSTOM_ELEMENTS_SCHEMA to your module -->
<!-- bc-field-integer -->
<bc-field-integer name="qty" label="Quantity" min="0" max="999" step="1"></bc-field-integer>

<!-- bc-field-float -->
<bc-field-float name="weight" label="Weight" precision="2" suffix-text="kg"></bc-field-float>

<!-- bc-field-decimal -->
<bc-field-decimal name="price" label="Price" precision="2" prefix-text="quot;></bc-field-decimal>

<!-- bc-field-currency -->
<bc-field-currency name="amount" label="Amount" currency="USD"></bc-field-currency>

<!-- bc-field-percent -->
<bc-field-percent name="discount" label="Discount" min="0" max="100"></bc-field-percent>

bc-field-date

bc-field-datetime

bc-field-time

bc-field-duration

📦 Framework Examples (3 components)
<!-- 3 components — Vanilla HTML -->
<!-- bc-field-date -->
<bc-field-date name="birthday" label="Birthday"></bc-field-date>

<!-- bc-field-datetime -->
<bc-field-datetime name="created" label="Created At"></bc-field-datetime>

<!-- bc-field-time -->
<bc-field-time name="start" label="Start Time"></bc-field-time>
import '@bitcode-framework/ui-web-components/bc-field-date, @bitcode-framework/ui-web-components/bc-field-datetime, @bitcode-framework/ui-web-components/bc-field-time';
// All bc-* tags work as JSX — they're standard Web Components
// Set props via attributes or ref

export default function Demo() {
  return (
    <>
      {/* bc-field-date */}
      <bc-field-date name="birthday" label="Birthday"></bc-field-date>

      {/* bc-field-datetime */}
      <bc-field-datetime name="created" label="Created At"></bc-field-datetime>

      {/* bc-field-time */}
      <bc-field-time name="start" label="Start Time"></bc-field-time>
    </>
  );
}
<template>
  <!-- bc-field-date -->
  <bc-field-date name="birthday" label="Birthday"></bc-field-date>

  <!-- bc-field-datetime -->
  <bc-field-datetime name="created" label="Created At"></bc-field-datetime>

  <!-- bc-field-time -->
  <bc-field-time name="start" label="Start Time"></bc-field-time>
</template>

<script setup>
// No import needed — bc-* components are registered globally
// via '@bitcode-framework/ui-web-components' loader in main.ts
</script>
<!-- app-demo.component.html -->
<!-- Add CUSTOM_ELEMENTS_SCHEMA to your module -->
<!-- bc-field-date -->
<bc-field-date name="birthday" label="Birthday"></bc-field-date>

<!-- bc-field-datetime -->
<bc-field-datetime name="created" label="Created At"></bc-field-datetime>

<!-- bc-field-time -->
<bc-field-time name="start" label="Start Time"></bc-field-time>

bc-field-select

Searchable dropdown with creatable and multi-select support.

bc-field-checkbox

bc-field-toggle

bc-field-radio

bc-field-multicheck

bc-field-rating

bc-field-color

📦 Framework Examples (6 components)
<!-- 6 components — Vanilla HTML -->
<!-- bc-field-select -->
<bc-field-select name="status" label="Status" options='[{"label":"Active","value":"active"},{"label":"Inactive","value":"inactive"}]'></bc-field-select>

<!-- bc-field-checkbox -->
<bc-field-checkbox name="colors" label="Colors" options='[{"label":"Red","value":"red"},{"label":"Blue","value":"blue"}]'></bc-field-checkbox>

<!-- bc-field-toggle -->
<bc-field-toggle name="dark" label="Dark Mode"></bc-field-toggle>

<!-- bc-field-radio -->
<bc-field-radio name="gender" label="Gender" options='[{"label":"Male","value":"M"},{"label":"Female","value":"F"}]'></bc-field-radio>

<!-- bc-field-rating -->
<bc-field-rating name="stars" label="Rating" max="5"></bc-field-rating>

<!-- bc-field-color -->
<bc-field-color name="theme" label="Theme Color" value="#4f46e5"></bc-field-color>
import '@bitcode-framework/ui-web-components/bc-field-select, @bitcode-framework/ui-web-components/bc-field-checkbox, @bitcode-framework/ui-web-components/bc-field-toggle, @bitcode-framework/ui-web-components/bc-field-radio, @bitcode-framework/ui-web-components/bc-field-rating, @bitcode-framework/ui-web-components/bc-field-color';
// All bc-* tags work as JSX — they're standard Web Components
// Set props via attributes or ref

export default function Demo() {
  return (
    <>
      {/* bc-field-select */}
      <bc-field-select name="status" label="Status" options={[{"label":"Active","value":"active"},{"label":"Inactive","value":"inactive"}]}></bc-field-select>

      {/* bc-field-checkbox */}
      <bc-field-checkbox name="colors" label="Colors" options={[{"label":"Red","value":"red"},{"label":"Blue","value":"blue"}]}></bc-field-checkbox>

      {/* bc-field-toggle */}
      <bc-field-toggle name="dark" label="Dark Mode"></bc-field-toggle>

      {/* bc-field-radio */}
      <bc-field-radio name="gender" label="Gender" options={[{"label":"Male","value":"M"},{"label":"Female","value":"F"}]}></bc-field-radio>

      {/* bc-field-rating */}
      <bc-field-rating name="stars" label="Rating" max="5"></bc-field-rating>

      {/* bc-field-color */}
      <bc-field-color name="theme" label="Theme Color" value="#4f46e5"></bc-field-color>
    </>
  );
}
<template>
  <!-- bc-field-select -->
  <bc-field-select name="status" label="Status" options='[{"label":"Active","value":"active"},{"label":"Inactive","value":"inactive"}]'></bc-field-select>

  <!-- bc-field-checkbox -->
  <bc-field-checkbox name="colors" label="Colors" options='[{"label":"Red","value":"red"},{"label":"Blue","value":"blue"}]'></bc-field-checkbox>

  <!-- bc-field-toggle -->
  <bc-field-toggle name="dark" label="Dark Mode"></bc-field-toggle>

  <!-- bc-field-radio -->
  <bc-field-radio name="gender" label="Gender" options='[{"label":"Male","value":"M"},{"label":"Female","value":"F"}]'></bc-field-radio>

  <!-- bc-field-rating -->
  <bc-field-rating name="stars" label="Rating" max="5"></bc-field-rating>

  <!-- bc-field-color -->
  <bc-field-color name="theme" label="Theme Color" value="#4f46e5"></bc-field-color>
</template>

<script setup>
// No import needed — bc-* components are registered globally
// via '@bitcode-framework/ui-web-components' loader in main.ts
</script>
<!-- app-demo.component.html -->
<!-- Add CUSTOM_ELEMENTS_SCHEMA to your module -->
<!-- bc-field-select -->
<bc-field-select name="status" label="Status" options='[{"label":"Active","value":"active"},{"label":"Inactive","value":"inactive"}]'></bc-field-select>

<!-- bc-field-checkbox -->
<bc-field-checkbox name="colors" label="Colors" options='[{"label":"Red","value":"red"},{"label":"Blue","value":"blue"}]'></bc-field-checkbox>

<!-- bc-field-toggle -->
<bc-field-toggle name="dark" label="Dark Mode"></bc-field-toggle>

<!-- bc-field-radio -->
<bc-field-radio name="gender" label="Gender" options='[{"label":"Male","value":"M"},{"label":"Female","value":"F"}]'></bc-field-radio>

<!-- bc-field-rating -->
<bc-field-rating name="stars" label="Rating" max="5"></bc-field-rating>

<!-- bc-field-color -->
<bc-field-color name="theme" label="Theme Color" value="#4f46e5"></bc-field-color>

bc-field-richtext

bc-field-markdown

bc-field-html

bc-field-code

bc-field-json

📦 Framework Examples (4 components)
<!-- 4 components — Vanilla HTML -->
<!-- bc-field-richtext -->
<bc-field-richtext name="content" label="Content"></bc-field-richtext>

<!-- bc-field-markdown -->
<bc-field-markdown name="readme" label="README"></bc-field-markdown>

<!-- bc-field-code -->
<bc-field-code name="script" label="Script" language="javascript"></bc-field-code>

<!-- bc-field-json -->
<bc-field-json name="config" label="Config"></bc-field-json>
import '@bitcode-framework/ui-web-components/bc-field-richtext, @bitcode-framework/ui-web-components/bc-field-markdown, @bitcode-framework/ui-web-components/bc-field-code, @bitcode-framework/ui-web-components/bc-field-json';
// All bc-* tags work as JSX — they're standard Web Components
// Set props via attributes or ref

export default function Demo() {
  return (
    <>
      {/* bc-field-richtext */}
      <bc-field-richtext name="content" label="Content"></bc-field-richtext>

      {/* bc-field-markdown */}
      <bc-field-markdown name="readme" label="README"></bc-field-markdown>

      {/* bc-field-code */}
      <bc-field-code name="script" label="Script" language="javascript"></bc-field-code>

      {/* bc-field-json */}
      <bc-field-json name="config" label="Config"></bc-field-json>
    </>
  );
}
<template>
  <!-- bc-field-richtext -->
  <bc-field-richtext name="content" label="Content"></bc-field-richtext>

  <!-- bc-field-markdown -->
  <bc-field-markdown name="readme" label="README"></bc-field-markdown>

  <!-- bc-field-code -->
  <bc-field-code name="script" label="Script" language="javascript"></bc-field-code>

  <!-- bc-field-json -->
  <bc-field-json name="config" label="Config"></bc-field-json>
</template>

<script setup>
// No import needed — bc-* components are registered globally
// via '@bitcode-framework/ui-web-components' loader in main.ts
</script>
<!-- app-demo.component.html -->
<!-- Add CUSTOM_ELEMENTS_SCHEMA to your module -->
<!-- bc-field-richtext -->
<bc-field-richtext name="content" label="Content"></bc-field-richtext>

<!-- bc-field-markdown -->
<bc-field-markdown name="readme" label="README"></bc-field-markdown>

<!-- bc-field-code -->
<bc-field-code name="script" label="Script" language="javascript"></bc-field-code>

<!-- bc-field-json -->
<bc-field-json name="config" label="Config"></bc-field-json>

bc-field-file

bc-field-image

bc-field-signature

bc-field-barcode

📦 Framework Examples (3 components)
<!-- 3 components — Vanilla HTML -->
<!-- bc-field-file -->
<bc-field-file name="avatar" label="Avatar" accept="image/*"></bc-field-file>

<!-- bc-field-image -->
<bc-field-image name="photo" label="Photo"></bc-field-image>

<!-- bc-field-signature -->
<bc-field-signature name="sig" label="Signature"></bc-field-signature>
import '@bitcode-framework/ui-web-components/bc-field-file, @bitcode-framework/ui-web-components/bc-field-image, @bitcode-framework/ui-web-components/bc-field-signature';
// All bc-* tags work as JSX — they're standard Web Components
// Set props via attributes or ref

export default function Demo() {
  return (
    <>
      {/* bc-field-file */}
      <bc-field-file name="avatar" label="Avatar" accept="image/*"></bc-field-file>

      {/* bc-field-image */}
      <bc-field-image name="photo" label="Photo"></bc-field-image>

      {/* bc-field-signature */}
      <bc-field-signature name="sig" label="Signature"></bc-field-signature>
    </>
  );
}
<template>
  <!-- bc-field-file -->
  <bc-field-file name="avatar" label="Avatar" accept="image/*"></bc-field-file>

  <!-- bc-field-image -->
  <bc-field-image name="photo" label="Photo"></bc-field-image>

  <!-- bc-field-signature -->
  <bc-field-signature name="sig" label="Signature"></bc-field-signature>
</template>

<script setup>
// No import needed — bc-* components are registered globally
// via '@bitcode-framework/ui-web-components' loader in main.ts
</script>
<!-- app-demo.component.html -->
<!-- Add CUSTOM_ELEMENTS_SCHEMA to your module -->
<!-- bc-field-file -->
<bc-field-file name="avatar" label="Avatar" accept="image/*"></bc-field-file>

<!-- bc-field-image -->
<bc-field-image name="photo" label="Photo"></bc-field-image>

<!-- bc-field-signature -->
<bc-field-signature name="sig" label="Signature"></bc-field-signature>

bc-field-tags

Tag input with search dropdown. Standalone mode uses static options.

bc-field-tableselect

Multi-record selector with search and table view.

bc-field-morph

Polymorphic relationship field with type selector.

bc-field-geo

Map-based geo point picker using Leaflet. Click to place marker.

bc-lookup-modal

Modal for browsing/selecting records from a table.

📦 Framework Examples (3 components)
<!-- 3 components — Vanilla HTML -->
<!-- bc-field-link -->
<bc-field-link name="ref" label="Reference" href="https://example.com" text="Open"></bc-field-link>

<!-- bc-field-dynlink -->
<bc-field-dynlink name="doc" label="Document" pattern="/docs/{id}"></bc-field-dynlink>

<!-- bc-field-tableselect -->
<bc-field-tableselect name="product" label="Product" model="product" columns='[{"field":"name","label":"Name"}]'></bc-field-tableselect>
import '@bitcode-framework/ui-web-components/bc-field-link, @bitcode-framework/ui-web-components/bc-field-dynlink, @bitcode-framework/ui-web-components/bc-field-tableselect';
// All bc-* tags work as JSX — they're standard Web Components
// Set props via attributes or ref

export default function Demo() {
  return (
    <>
      {/* bc-field-link */}
      <bc-field-link name="ref" label="Reference" href="https://example.com" text="Open"></bc-field-link>

      {/* bc-field-dynlink */}
      <bc-field-dynlink name="doc" label="Document" pattern="/docs/{id}"></bc-field-dynlink>

      {/* bc-field-tableselect */}
      <bc-field-tableselect name="product" label="Product" model="product" columns={[{"field":"name","label":"Name"}]}></bc-field-tableselect>
    </>
  );
}
<template>
  <!-- bc-field-link -->
  <bc-field-link name="ref" label="Reference" href="https://example.com" text="Open"></bc-field-link>

  <!-- bc-field-dynlink -->
  <bc-field-dynlink name="doc" label="Document" pattern="/docs/{id}"></bc-field-dynlink>

  <!-- bc-field-tableselect -->
  <bc-field-tableselect name="product" label="Product" model="product" columns='[{"field":"name","label":"Name"}]'></bc-field-tableselect>
</template>

<script setup>
// No import needed — bc-* components are registered globally
// via '@bitcode-framework/ui-web-components' loader in main.ts
</script>
<!-- app-demo.component.html -->
<!-- Add CUSTOM_ELEMENTS_SCHEMA to your module -->
<!-- bc-field-link -->
<bc-field-link name="ref" label="Reference" href="https://example.com" text="Open"></bc-field-link>

<!-- bc-field-dynlink -->
<bc-field-dynlink name="doc" label="Document" pattern="/docs/{id}"></bc-field-dynlink>

<!-- bc-field-tableselect -->
<bc-field-tableselect name="product" label="Product" model="product" columns='[{"field":"name","label":"Name"}]'></bc-field-tableselect>
Charts

bc-chart-bar

bc-chart-line

bc-chart-area

bc-chart-pie

bc-chart-scatter

bc-chart-radar

bc-chart-gauge

bc-chart-funnel

bc-chart-heatmap

bc-chart-candlestick

bc-chart-boxplot

bc-chart-sankey

bc-chart-treemap

bc-chart-sunburst

bc-chart-graph

bc-chart-tree

bc-chart-themeriver

bc-chart-parallel

bc-chart-pictorialbar

bc-chart-polar

bc-chart-mixed

bc-chart-custom

Pass raw ECharts option JSON for full customization.

bc-chart-pivot

Pivot table with aggregation.

bc-chart-progress

bc-chart-kpi

bc-chart-scorecard

📦 Framework Examples (16 components)
<!-- 16 components — Vanilla HTML -->
<!-- bc-chart-bar -->
<bc-chart-bar chart-title="Sales" data='[{"name":"Q1","value":120}]'></bc-chart-bar>

<!-- bc-chart-line -->
<bc-chart-line chart-title="Trend" data='[{"name":"Jan","value":100}]' smooth></bc-chart-line>

<!-- bc-chart-area -->
<bc-chart-area chart-title="Traffic" data='[{"name":"Mon","value":820}]'></bc-chart-area>

<!-- bc-chart-pie -->
<bc-chart-pie chart-title="Share" data='[{"name":"A","value":60}]' donut></bc-chart-pie>

<!-- bc-chart-scatter -->
<bc-chart-scatter chart-title="Correlation" data='[[10,8],[8,7]]'></bc-chart-scatter>

<!-- bc-chart-radar -->
<bc-chart-radar chart-title="Skills" data='[{"name":"Speed","value":80}]'></bc-chart-radar>

<!-- bc-chart-gauge -->
<bc-chart-gauge chart-title="CPU" value="72" max="100"></bc-chart-gauge>

<!-- bc-chart-funnel -->
<bc-chart-funnel chart-title="Pipeline" data='[{"name":"Leads","value":100}]'></bc-chart-funnel>

<!-- bc-chart-heatmap -->
<bc-chart-heatmap chart-title="Activity" data='[[0,0,5],[0,1,8]]'></bc-chart-heatmap>

<!-- bc-chart-candlestick -->
<bc-chart-candlestick chart-title="Stock" data='[["2024-01",100,120,90,110]]'></bc-chart-candlestick>

<!-- bc-chart-boxplot -->
<bc-chart-boxplot chart-title="Dist" data='[[1,2,3,4,5]]'></bc-chart-boxplot>

<!-- bc-chart-sankey -->
<bc-chart-sankey chart-title="Flow" data='...'></bc-chart-sankey>

<!-- bc-chart-treemap -->
<bc-chart-treemap chart-title="Budget" data='[{"name":"Eng","value":50}]'></bc-chart-treemap>

<!-- bc-chart-graph -->
<bc-chart-graph chart-title="Network" data='...'></bc-chart-graph>

<!-- bc-chart-themeriver -->
<bc-chart-themeriver chart-title="Trend" data='...'></bc-chart-themeriver>

<!-- bc-chart-parallel -->
<bc-chart-parallel chart-title="Multi" data='...'></bc-chart-parallel>
import '@bitcode-framework/ui-web-components/bc-chart-bar, @bitcode-framework/ui-web-components/bc-chart-line, @bitcode-framework/ui-web-components/bc-chart-area, @bitcode-framework/ui-web-components/bc-chart-pie, @bitcode-framework/ui-web-components/bc-chart-scatter, @bitcode-framework/ui-web-components/bc-chart-radar, @bitcode-framework/ui-web-components/bc-chart-gauge, @bitcode-framework/ui-web-components/bc-chart-funnel, @bitcode-framework/ui-web-components/bc-chart-heatmap, @bitcode-framework/ui-web-components/bc-chart-candlestick, @bitcode-framework/ui-web-components/bc-chart-boxplot, @bitcode-framework/ui-web-components/bc-chart-sankey, @bitcode-framework/ui-web-components/bc-chart-treemap, @bitcode-framework/ui-web-components/bc-chart-graph, @bitcode-framework/ui-web-components/bc-chart-themeriver, @bitcode-framework/ui-web-components/bc-chart-parallel';
// All bc-* tags work as JSX — they're standard Web Components
// Set props via attributes or ref

export default function Demo() {
  return (
    <>
      {/* bc-chart-bar */}
      <bc-chart-bar chartTitle="Sales" data={[{"name":"Q1","value":120}]}></bc-chart-bar>

      {/* bc-chart-line */}
      <bc-chart-line chartTitle="Trend" data={[{"name":"Jan","value":100}]} smooth={true}></bc-chart-line>

      {/* bc-chart-area */}
      <bc-chart-area chartTitle="Traffic" data={[{"name":"Mon","value":820}]}></bc-chart-area>

      {/* bc-chart-pie */}
      <bc-chart-pie chartTitle="Share" data={[{"name":"A","value":60}]} donut={true}></bc-chart-pie>

      {/* bc-chart-scatter */}
      <bc-chart-scatter chartTitle="Correlation" data={[[10,8],[8,7]]}></bc-chart-scatter>

      {/* bc-chart-radar */}
      <bc-chart-radar chartTitle="Skills" data={[{"name":"Speed","value":80}]}></bc-chart-radar>

      {/* bc-chart-gauge */}
      <bc-chart-gauge chartTitle="CPU" value="72" max="100"></bc-chart-gauge>

      {/* bc-chart-funnel */}
      <bc-chart-funnel chartTitle="Pipeline" data={[{"name":"Leads","value":100}]}></bc-chart-funnel>

      {/* bc-chart-heatmap */}
      <bc-chart-heatmap chartTitle="Activity" data={[[0,0,5],[0,1,8]]}></bc-chart-heatmap>

      {/* bc-chart-candlestick */}
      <bc-chart-candlestick chartTitle="Stock" data={[["2024-01",100,120,90,110]]}></bc-chart-candlestick>

      {/* bc-chart-boxplot */}
      <bc-chart-boxplot chartTitle="Dist" data={[[1,2,3,4,5]]}></bc-chart-boxplot>

      {/* bc-chart-sankey */}
      <bc-chart-sankey chartTitle="Flow" data="..."></bc-chart-sankey>

      {/* bc-chart-treemap */}
      <bc-chart-treemap chartTitle="Budget" data={[{"name":"Eng","value":50}]}></bc-chart-treemap>

      {/* bc-chart-graph */}
      <bc-chart-graph chartTitle="Network" data="..."></bc-chart-graph>

      {/* bc-chart-themeriver */}
      <bc-chart-themeriver chartTitle="Trend" data="..."></bc-chart-themeriver>

      {/* bc-chart-parallel */}
      <bc-chart-parallel chartTitle="Multi" data="..."></bc-chart-parallel>
    </>
  );
}
<template>
  <!-- bc-chart-bar -->
  <bc-chart-bar chart-title="Sales" data='[{"name":"Q1","value":120}]'></bc-chart-bar>

  <!-- bc-chart-line -->
  <bc-chart-line chart-title="Trend" data='[{"name":"Jan","value":100}]' smooth></bc-chart-line>

  <!-- bc-chart-area -->
  <bc-chart-area chart-title="Traffic" data='[{"name":"Mon","value":820}]'></bc-chart-area>

  <!-- bc-chart-pie -->
  <bc-chart-pie chart-title="Share" data='[{"name":"A","value":60}]' donut></bc-chart-pie>

  <!-- bc-chart-scatter -->
  <bc-chart-scatter chart-title="Correlation" data='[[10,8],[8,7]]'></bc-chart-scatter>

  <!-- bc-chart-radar -->
  <bc-chart-radar chart-title="Skills" data='[{"name":"Speed","value":80}]'></bc-chart-radar>

  <!-- bc-chart-gauge -->
  <bc-chart-gauge chart-title="CPU" value="72" max="100"></bc-chart-gauge>

  <!-- bc-chart-funnel -->
  <bc-chart-funnel chart-title="Pipeline" data='[{"name":"Leads","value":100}]'></bc-chart-funnel>

  <!-- bc-chart-heatmap -->
  <bc-chart-heatmap chart-title="Activity" data='[[0,0,5],[0,1,8]]'></bc-chart-heatmap>

  <!-- bc-chart-candlestick -->
  <bc-chart-candlestick chart-title="Stock" data='[["2024-01",100,120,90,110]]'></bc-chart-candlestick>

  <!-- bc-chart-boxplot -->
  <bc-chart-boxplot chart-title="Dist" data='[[1,2,3,4,5]]'></bc-chart-boxplot>

  <!-- bc-chart-sankey -->
  <bc-chart-sankey chart-title="Flow" data='...'></bc-chart-sankey>

  <!-- bc-chart-treemap -->
  <bc-chart-treemap chart-title="Budget" data='[{"name":"Eng","value":50}]'></bc-chart-treemap>

  <!-- bc-chart-graph -->
  <bc-chart-graph chart-title="Network" data='...'></bc-chart-graph>

  <!-- bc-chart-themeriver -->
  <bc-chart-themeriver chart-title="Trend" data='...'></bc-chart-themeriver>

  <!-- bc-chart-parallel -->
  <bc-chart-parallel chart-title="Multi" data='...'></bc-chart-parallel>
</template>

<script setup>
// No import needed — bc-* components are registered globally
// via '@bitcode-framework/ui-web-components' loader in main.ts
</script>
<!-- app-demo.component.html -->
<!-- Add CUSTOM_ELEMENTS_SCHEMA to your module -->
<!-- bc-chart-bar -->
<bc-chart-bar chart-title="Sales" data='[{"name":"Q1","value":120}]'></bc-chart-bar>

<!-- bc-chart-line -->
<bc-chart-line chart-title="Trend" data='[{"name":"Jan","value":100}]' smooth></bc-chart-line>

<!-- bc-chart-area -->
<bc-chart-area chart-title="Traffic" data='[{"name":"Mon","value":820}]'></bc-chart-area>

<!-- bc-chart-pie -->
<bc-chart-pie chart-title="Share" data='[{"name":"A","value":60}]' donut></bc-chart-pie>

<!-- bc-chart-scatter -->
<bc-chart-scatter chart-title="Correlation" data='[[10,8],[8,7]]'></bc-chart-scatter>

<!-- bc-chart-radar -->
<bc-chart-radar chart-title="Skills" data='[{"name":"Speed","value":80}]'></bc-chart-radar>

<!-- bc-chart-gauge -->
<bc-chart-gauge chart-title="CPU" value="72" max="100"></bc-chart-gauge>

<!-- bc-chart-funnel -->
<bc-chart-funnel chart-title="Pipeline" data='[{"name":"Leads","value":100}]'></bc-chart-funnel>

<!-- bc-chart-heatmap -->
<bc-chart-heatmap chart-title="Activity" data='[[0,0,5],[0,1,8]]'></bc-chart-heatmap>

<!-- bc-chart-candlestick -->
<bc-chart-candlestick chart-title="Stock" data='[["2024-01",100,120,90,110]]'></bc-chart-candlestick>

<!-- bc-chart-boxplot -->
<bc-chart-boxplot chart-title="Dist" data='[[1,2,3,4,5]]'></bc-chart-boxplot>

<!-- bc-chart-sankey -->
<bc-chart-sankey chart-title="Flow" data='...'></bc-chart-sankey>

<!-- bc-chart-treemap -->
<bc-chart-treemap chart-title="Budget" data='[{"name":"Eng","value":50}]'></bc-chart-treemap>

<!-- bc-chart-graph -->
<bc-chart-graph chart-title="Network" data='...'></bc-chart-graph>

<!-- bc-chart-themeriver -->
<bc-chart-themeriver chart-title="Trend" data='...'></bc-chart-themeriver>

<!-- bc-chart-parallel -->
<bc-chart-parallel chart-title="Multi" data='...'></bc-chart-parallel>
Datatable

bc-datatable

Full-featured data table with sorting, filtering, pagination, and row selection.

bc-child-table

Inline editable child/one2many table.

bc-filter-panel

bc-filter-bar

bc-filter-builder

Advanced query builder with AND/OR groups.

📦 Framework Examples (5 components)
<!-- 5 components — Vanilla HTML -->
<!-- bc-datatable -->
<bc-datatable model="contact" columns='[{"field":"name","label":"Name"},{"field":"email","label":"Email"}]'></bc-datatable>

<!-- bc-child-table -->
<bc-child-table model="contact" fields='["name","email"]'></bc-child-table>

<!-- bc-filter-panel -->
<bc-filter-panel fields='[{"key":"name","label":"Name","type":"string"}]'></bc-filter-panel>

<!-- bc-filter-bar -->
<bc-filter-bar fields='[{"key":"name","label":"Name","type":"string"}]'></bc-filter-bar>

<!-- bc-filter-builder -->
<bc-filter-builder fields='[{"key":"name","label":"Name","type":"string"}]'></bc-filter-builder>
import '@bitcode-framework/ui-web-components/bc-datatable, @bitcode-framework/ui-web-components/bc-child-table, @bitcode-framework/ui-web-components/bc-filter-panel, @bitcode-framework/ui-web-components/bc-filter-bar, @bitcode-framework/ui-web-components/bc-filter-builder';
// All bc-* tags work as JSX — they're standard Web Components
// Set props via attributes or ref

export default function Demo() {
  return (
    <>
      {/* bc-datatable */}
      <bc-datatable model="contact" columns={[{"field":"name","label":"Name"},{"field":"email","label":"Email"}]}></bc-datatable>

      {/* bc-child-table */}
      <bc-child-table model="contact" fields={["name","email"]}></bc-child-table>

      {/* bc-filter-panel */}
      <bc-filter-panel fields={[{"key":"name","label":"Name","type":"string"}]}></bc-filter-panel>

      {/* bc-filter-bar */}
      <bc-filter-bar fields={[{"key":"name","label":"Name","type":"string"}]}></bc-filter-bar>

      {/* bc-filter-builder */}
      <bc-filter-builder fields={[{"key":"name","label":"Name","type":"string"}]}></bc-filter-builder>
    </>
  );
}
<template>
  <!-- bc-datatable -->
  <bc-datatable model="contact" columns='[{"field":"name","label":"Name"},{"field":"email","label":"Email"}]'></bc-datatable>

  <!-- bc-child-table -->
  <bc-child-table model="contact" fields='["name","email"]'></bc-child-table>

  <!-- bc-filter-panel -->
  <bc-filter-panel fields='[{"key":"name","label":"Name","type":"string"}]'></bc-filter-panel>

  <!-- bc-filter-bar -->
  <bc-filter-bar fields='[{"key":"name","label":"Name","type":"string"}]'></bc-filter-bar>

  <!-- bc-filter-builder -->
  <bc-filter-builder fields='[{"key":"name","label":"Name","type":"string"}]'></bc-filter-builder>
</template>

<script setup>
// No import needed — bc-* components are registered globally
// via '@bitcode-framework/ui-web-components' loader in main.ts
</script>
<!-- app-demo.component.html -->
<!-- Add CUSTOM_ELEMENTS_SCHEMA to your module -->
<!-- bc-datatable -->
<bc-datatable model="contact" columns='[{"field":"name","label":"Name"},{"field":"email","label":"Email"}]'></bc-datatable>

<!-- bc-child-table -->
<bc-child-table model="contact" fields='["name","email"]'></bc-child-table>

<!-- bc-filter-panel -->
<bc-filter-panel fields='[{"key":"name","label":"Name","type":"string"}]'></bc-filter-panel>

<!-- bc-filter-bar -->
<bc-filter-bar fields='[{"key":"name","label":"Name","type":"string"}]'></bc-filter-bar>

<!-- bc-filter-builder -->
<bc-filter-builder fields='[{"key":"name","label":"Name","type":"string"}]'></bc-filter-builder>
Dialogs

bc-dialog-modal

Modal content. Click X or overlay to close.

bc-dialog-confirm

Confirmation dialog with 4 variants: default, danger, warning, info.

bc-dialog-alert

Alert dialog with 5 variants: default, success, danger, warning, info.

bc-dialog-prompt

bc-dialog-wizard

Step 1: Account details
Step 2: Profile info
Step 3: Confirm

bc-dialog-quickentry

Quick record creation dialog with auto-generated form.

bc-toast

📦 Framework Examples (7 components)
<!-- 7 components — Vanilla HTML -->
<!-- bc-dialog-modal -->
<bc-dialog-modal dialog-title="Confirm" open>Content here</bc-dialog-modal>

<!-- bc-dialog-confirm -->
<bc-dialog-confirm dialog-title="Delete?" message="Are you sure?"></bc-dialog-confirm>

<!-- bc-dialog-alert -->
<bc-dialog-alert dialog-title="Info" message="Saved!"></bc-dialog-alert>

<!-- bc-dialog-prompt -->
<bc-dialog-prompt dialog-title="Name" message="Enter name:" value=""></bc-dialog-prompt>

<!-- bc-dialog-wizard -->
<bc-dialog-wizard dialog-title="Setup" steps='[{"title":"Step 1"},{"title":"Step 2"}]'></bc-dialog-wizard>

<!-- bc-dialog-quickentry -->
<bc-dialog-quickentry dialog-title="New" model="contact" fields='["name","email"]'></bc-dialog-quickentry>

<!-- bc-toast -->
<bc-toast variant="success" message="Saved!"></bc-toast>
import '@bitcode-framework/ui-web-components/bc-dialog-modal, @bitcode-framework/ui-web-components/bc-dialog-confirm, @bitcode-framework/ui-web-components/bc-dialog-alert, @bitcode-framework/ui-web-components/bc-dialog-prompt, @bitcode-framework/ui-web-components/bc-dialog-wizard, @bitcode-framework/ui-web-components/bc-dialog-quickentry, @bitcode-framework/ui-web-components/bc-toast';
// All bc-* tags work as JSX — they're standard Web Components
// Set props via attributes or ref

export default function Demo() {
  return (
    <>
      {/* bc-dialog-modal */}
      <bc-dialog-modal dialogTitle="Confirm" open={true}>Content here</bc-dialog-modal>

      {/* bc-dialog-confirm */}
      <bc-dialog-confirm dialogTitle="Delete?" message="Are you sure?"></bc-dialog-confirm>

      {/* bc-dialog-alert */}
      <bc-dialog-alert dialogTitle="Info" message="Saved!"></bc-dialog-alert>

      {/* bc-dialog-prompt */}
      <bc-dialog-prompt dialogTitle="Name" message="Enter name:" value=""></bc-dialog-prompt>

      {/* bc-dialog-wizard */}
      <bc-dialog-wizard dialogTitle="Setup" steps={[{"title":"Step 1"},{"title":"Step 2"}]}></bc-dialog-wizard>

      {/* bc-dialog-quickentry */}
      <bc-dialog-quickentry dialogTitle="New" model="contact" fields={["name","email"]}></bc-dialog-quickentry>

      {/* bc-toast */}
      <bc-toast variant="success" message="Saved!"></bc-toast>
    </>
  );
}
<template>
  <!-- bc-dialog-modal -->
  <bc-dialog-modal dialog-title="Confirm" open>Content here</bc-dialog-modal>

  <!-- bc-dialog-confirm -->
  <bc-dialog-confirm dialog-title="Delete?" message="Are you sure?"></bc-dialog-confirm>

  <!-- bc-dialog-alert -->
  <bc-dialog-alert dialog-title="Info" message="Saved!"></bc-dialog-alert>

  <!-- bc-dialog-prompt -->
  <bc-dialog-prompt dialog-title="Name" message="Enter name:" value=""></bc-dialog-prompt>

  <!-- bc-dialog-wizard -->
  <bc-dialog-wizard dialog-title="Setup" steps='[{"title":"Step 1"},{"title":"Step 2"}]'></bc-dialog-wizard>

  <!-- bc-dialog-quickentry -->
  <bc-dialog-quickentry dialog-title="New" model="contact" fields='["name","email"]'></bc-dialog-quickentry>

  <!-- bc-toast -->
  <bc-toast variant="success" message="Saved!"></bc-toast>
</template>

<script setup>
// No import needed — bc-* components are registered globally
// via '@bitcode-framework/ui-web-components' loader in main.ts
</script>
<!-- app-demo.component.html -->
<!-- Add CUSTOM_ELEMENTS_SCHEMA to your module -->
<!-- bc-dialog-modal -->
<bc-dialog-modal dialog-title="Confirm" open>Content here</bc-dialog-modal>

<!-- bc-dialog-confirm -->
<bc-dialog-confirm dialog-title="Delete?" message="Are you sure?"></bc-dialog-confirm>

<!-- bc-dialog-alert -->
<bc-dialog-alert dialog-title="Info" message="Saved!"></bc-dialog-alert>

<!-- bc-dialog-prompt -->
<bc-dialog-prompt dialog-title="Name" message="Enter name:" value=""></bc-dialog-prompt>

<!-- bc-dialog-wizard -->
<bc-dialog-wizard dialog-title="Setup" steps='[{"title":"Step 1"},{"title":"Step 2"}]'></bc-dialog-wizard>

<!-- bc-dialog-quickentry -->
<bc-dialog-quickentry dialog-title="New" model="contact" fields='["name","email"]'></bc-dialog-quickentry>

<!-- bc-toast -->
<bc-toast variant="success" message="Saved!"></bc-toast>
Layout

bc-section

Collapsible content.

bc-tabs

Tab 1 content
Tab 2 content
Tab 3 content

bc-row

Col 1
Col 2
Col 3

bc-column

4/12
8/12

bc-sheet

Card-like container with slot content.

bc-separator

Content above

Content below

bc-html-block

bc-button-box

Odoo-style smart buttons with count badges.

📦 Framework Examples (10 components)
<!-- 10 components — Vanilla HTML -->
<!-- bc-section -->
<bc-section title="Section Title">Content</bc-section>

<!-- bc-tabs -->
<bc-tabs><bc-tab label="Tab 1">Content 1</bc-tab><bc-tab label="Tab 2">Content 2</bc-tab></bc-tabs>

<!-- bc-tab -->
<bc-tab label="Tab Content">Panel content here</bc-tab>

<!-- bc-row -->
<bc-row gap="1rem"><div>Col 1</div><div>Col 2</div></bc-row>

<!-- bc-column -->
<bc-column width="50%">Half-width column</bc-column>

<!-- bc-header -->
<bc-header title="Page Title" subtitle="Description"></bc-header>

<!-- bc-sheet -->
<bc-sheet title="Card Title">Card content</bc-sheet>

<!-- bc-separator -->
<bc-separator></bc-separator>

<!-- bc-html-block -->
<bc-html-block content="<h2>Title</h2><p>Text</p>"></bc-html-block>

<!-- bc-button-box -->
<bc-button-box><button>Action</button></bc-button-box>
import '@bitcode-framework/ui-web-components/bc-section, @bitcode-framework/ui-web-components/bc-tabs, @bitcode-framework/ui-web-components/bc-tab, @bitcode-framework/ui-web-components/bc-row, @bitcode-framework/ui-web-components/bc-column, @bitcode-framework/ui-web-components/bc-header, @bitcode-framework/ui-web-components/bc-sheet, @bitcode-framework/ui-web-components/bc-separator, @bitcode-framework/ui-web-components/bc-html-block, @bitcode-framework/ui-web-components/bc-button-box';
// All bc-* tags work as JSX — they're standard Web Components
// Set props via attributes or ref

export default function Demo() {
  return (
    <>
      {/* bc-section */}
      <bc-section title="Section Title">Content</bc-section>

      {/* bc-tabs */}
      <bc-tabs><bc-tab label="Tab 1">Content 1</bc-tab><bc-tab label="Tab 2">Content 2</bc-tab></bc-tabs>

      {/* bc-tab */}
      <bc-tab label="Tab Content">Panel content here</bc-tab>

      {/* bc-row */}
      <bc-row gap="1rem"><div>Col 1</div><div>Col 2</div></bc-row>

      {/* bc-column */}
      <bc-column width="50%">Half-width column</bc-column>

      {/* bc-header */}
      <bc-header title="Page Title" subtitle="Description"></bc-header>

      {/* bc-sheet */}
      <bc-sheet title="Card Title">Card content</bc-sheet>

      {/* bc-separator */}
      <bc-separator></bc-separator>

      {/* bc-html-block */}
      <bc-html-block content="<h2>Title</h2><p>Text</p>"></bc-html-block>

      {/* bc-button-box */}
      <bc-button-box><button>Action</button></bc-button-box>
    </>
  );
}
<template>
  <!-- bc-section -->
  <bc-section title="Section Title">Content</bc-section>

  <!-- bc-tabs -->
  <bc-tabs><bc-tab label="Tab 1">Content 1</bc-tab><bc-tab label="Tab 2">Content 2</bc-tab></bc-tabs>

  <!-- bc-tab -->
  <bc-tab label="Tab Content">Panel content here</bc-tab>

  <!-- bc-row -->
  <bc-row gap="1rem"><div>Col 1</div><div>Col 2</div></bc-row>

  <!-- bc-column -->
  <bc-column width="50%">Half-width column</bc-column>

  <!-- bc-header -->
  <bc-header title="Page Title" subtitle="Description"></bc-header>

  <!-- bc-sheet -->
  <bc-sheet title="Card Title">Card content</bc-sheet>

  <!-- bc-separator -->
  <bc-separator></bc-separator>

  <!-- bc-html-block -->
  <bc-html-block content="<h2>Title</h2><p>Text</p>"></bc-html-block>

  <!-- bc-button-box -->
  <bc-button-box><button>Action</button></bc-button-box>
</template>

<script setup>
// No import needed — bc-* components are registered globally
// via '@bitcode-framework/ui-web-components' loader in main.ts
</script>
<!-- app-demo.component.html -->
<!-- Add CUSTOM_ELEMENTS_SCHEMA to your module -->
<!-- bc-section -->
<bc-section title="Section Title">Content</bc-section>

<!-- bc-tabs -->
<bc-tabs><bc-tab label="Tab 1">Content 1</bc-tab><bc-tab label="Tab 2">Content 2</bc-tab></bc-tabs>

<!-- bc-tab -->
<bc-tab label="Tab Content">Panel content here</bc-tab>

<!-- bc-row -->
<bc-row gap="1rem"><div>Col 1</div><div>Col 2</div></bc-row>

<!-- bc-column -->
<bc-column width="50%">Half-width column</bc-column>

<!-- bc-header -->
<bc-header title="Page Title" subtitle="Description"></bc-header>

<!-- bc-sheet -->
<bc-sheet title="Card Title">Card content</bc-sheet>

<!-- bc-separator -->
<bc-separator></bc-separator>

<!-- bc-html-block -->
<bc-html-block content="<h2>Title</h2><p>Text</p>"></bc-html-block>

<!-- bc-button-box -->
<bc-button-box><button>Action</button></bc-button-box>
Media Viewers

bc-viewer-pdf

bc-viewer-image

bc-viewer-video

bc-viewer-audio

bc-viewer-document

Document viewer using Office Online or Google Docs viewer. Requires a publicly accessible document URL.

bc-viewer-youtube

bc-viewer-instagram

Instagram embed via oEmbed.

bc-viewer-tiktok

TikTok video embed.

📦 Framework Examples (8 components)
<!-- 8 components — Vanilla HTML -->
<!-- bc-viewer-pdf -->
<bc-viewer-pdf src="/files/doc.pdf"></bc-viewer-pdf>

<!-- bc-viewer-image -->
<bc-viewer-image src="/files/photo.jpg" thumbnail></bc-viewer-image>

<!-- bc-viewer-video -->
<bc-viewer-video src="/files/clip.mp4"></bc-viewer-video>

<!-- bc-viewer-audio -->
<bc-viewer-audio src="/files/podcast.mp3"></bc-viewer-audio>

<!-- bc-viewer-document -->
<bc-viewer-document src="/files/report.docx"></bc-viewer-document>

<!-- bc-viewer-youtube -->
<bc-viewer-youtube video-id="dQw4w9WgXcQ"></bc-viewer-youtube>

<!-- bc-viewer-instagram -->
<bc-viewer-instagram post-url="https://instagram.com/p/xxx"></bc-viewer-instagram>

<!-- bc-viewer-tiktok -->
<bc-viewer-tiktok video-url="https://tiktok.com/@x/video/123"></bc-viewer-tiktok>
import '@bitcode-framework/ui-web-components/bc-viewer-pdf, @bitcode-framework/ui-web-components/bc-viewer-image, @bitcode-framework/ui-web-components/bc-viewer-video, @bitcode-framework/ui-web-components/bc-viewer-audio, @bitcode-framework/ui-web-components/bc-viewer-document, @bitcode-framework/ui-web-components/bc-viewer-youtube, @bitcode-framework/ui-web-components/bc-viewer-instagram, @bitcode-framework/ui-web-components/bc-viewer-tiktok';
// All bc-* tags work as JSX — they're standard Web Components
// Set props via attributes or ref

export default function Demo() {
  return (
    <>
      {/* bc-viewer-pdf */}
      <bc-viewer-pdf src="/files/doc.pdf"></bc-viewer-pdf>

      {/* bc-viewer-image */}
      <bc-viewer-image src="/files/photo.jpg" thumbnail={true}></bc-viewer-image>

      {/* bc-viewer-video */}
      <bc-viewer-video src="/files/clip.mp4"></bc-viewer-video>

      {/* bc-viewer-audio */}
      <bc-viewer-audio src="/files/podcast.mp3"></bc-viewer-audio>

      {/* bc-viewer-document */}
      <bc-viewer-document src="/files/report.docx"></bc-viewer-document>

      {/* bc-viewer-youtube */}
      <bc-viewer-youtube videoId="dQw4w9WgXcQ"></bc-viewer-youtube>

      {/* bc-viewer-instagram */}
      <bc-viewer-instagram postUrl="https://instagram.com/p/xxx"></bc-viewer-instagram>

      {/* bc-viewer-tiktok */}
      <bc-viewer-tiktok videoUrl="https://tiktok.com/@x/video/123"></bc-viewer-tiktok>
    </>
  );
}
<template>
  <!-- bc-viewer-pdf -->
  <bc-viewer-pdf src="/files/doc.pdf"></bc-viewer-pdf>

  <!-- bc-viewer-image -->
  <bc-viewer-image src="/files/photo.jpg" thumbnail></bc-viewer-image>

  <!-- bc-viewer-video -->
  <bc-viewer-video src="/files/clip.mp4"></bc-viewer-video>

  <!-- bc-viewer-audio -->
  <bc-viewer-audio src="/files/podcast.mp3"></bc-viewer-audio>

  <!-- bc-viewer-document -->
  <bc-viewer-document src="/files/report.docx"></bc-viewer-document>

  <!-- bc-viewer-youtube -->
  <bc-viewer-youtube video-id="dQw4w9WgXcQ"></bc-viewer-youtube>

  <!-- bc-viewer-instagram -->
  <bc-viewer-instagram post-url="https://instagram.com/p/xxx"></bc-viewer-instagram>

  <!-- bc-viewer-tiktok -->
  <bc-viewer-tiktok video-url="https://tiktok.com/@x/video/123"></bc-viewer-tiktok>
</template>

<script setup>
// No import needed — bc-* components are registered globally
// via '@bitcode-framework/ui-web-components' loader in main.ts
</script>
<!-- app-demo.component.html -->
<!-- Add CUSTOM_ELEMENTS_SCHEMA to your module -->
<!-- bc-viewer-pdf -->
<bc-viewer-pdf src="/files/doc.pdf"></bc-viewer-pdf>

<!-- bc-viewer-image -->
<bc-viewer-image src="/files/photo.jpg" thumbnail></bc-viewer-image>

<!-- bc-viewer-video -->
<bc-viewer-video src="/files/clip.mp4"></bc-viewer-video>

<!-- bc-viewer-audio -->
<bc-viewer-audio src="/files/podcast.mp3"></bc-viewer-audio>

<!-- bc-viewer-document -->
<bc-viewer-document src="/files/report.docx"></bc-viewer-document>

<!-- bc-viewer-youtube -->
<bc-viewer-youtube video-id="dQw4w9WgXcQ"></bc-viewer-youtube>

<!-- bc-viewer-instagram -->
<bc-viewer-instagram post-url="https://instagram.com/p/xxx"></bc-viewer-instagram>

<!-- bc-viewer-tiktok -->
<bc-viewer-tiktok video-url="https://tiktok.com/@x/video/123"></bc-viewer-tiktok>
Views

bc-view-list

Paginated list/table view with sorting and search.

bc-view-form

Auto-generated form with CRUD and permissions.

bc-view-kanban

Simple kanban view. Drag cards between columns.

bc-kanban-board Enterprise

Full-featured kanban board with Trello/Jira-level features. Click cards to see detail panel with comments, subtasks, attachments, and activity. Drag cards and columns to reorder. Add new cards and columns.

bc-view-calendar

Calendar view using FullCalendar.

bc-view-gantt

Full-featured Gantt chart with tree hierarchy, drag-and-drop, dependencies, and multi-scale timeline.

bc-view-map

Map view using Leaflet markers.

bc-view-tree

Hierarchical tree view.

bc-view-report

Report view with totals and grouping.

bc-view-editor

Visual drag-and-drop view editor for building form layouts.

bc-view-activity

Activity log for a model.

📦 Framework Examples (10 components)
<!-- 10 components — Vanilla HTML -->
<!-- bc-view-list -->
<bc-view-list model="contact" fields='["name","email"]'></bc-view-list>

<!-- bc-view-form -->
<bc-view-form model="contact" fields='["name","email","phone"]'></bc-view-form>

<!-- bc-view-kanban -->
<bc-view-kanban model="lead" fields='["name","stage"]'></bc-view-kanban>

<!-- bc-view-calendar -->
<bc-view-calendar model="event" fields='["name","start","end"]'></bc-view-calendar>

<!-- bc-view-gantt -->
<bc-view-gantt tasks='[{"id":"1","text":"Task 1","start":"2024-01-01","duration":5}]'></bc-view-gantt>

<!-- bc-view-map -->
<bc-view-map model="branch" fields='["name","lat","lng"]'></bc-view-map>

<!-- bc-view-tree -->
<bc-view-tree model="category" fields='["name","parent"]'></bc-view-tree>

<!-- bc-view-report -->
<bc-view-report model="sale" fields='["name","amount"]'></bc-view-report>

<!-- bc-view-editor -->
<bc-view-editor model-fields='[{"name":"name","type":"string"}]'></bc-view-editor>

<!-- bc-view-activity -->
<bc-view-activity model="contact" fields='["name","desc"]'></bc-view-activity>
import '@bitcode-framework/ui-web-components/bc-view-list, @bitcode-framework/ui-web-components/bc-view-form, @bitcode-framework/ui-web-components/bc-view-kanban, @bitcode-framework/ui-web-components/bc-view-calendar, @bitcode-framework/ui-web-components/bc-view-gantt, @bitcode-framework/ui-web-components/bc-view-map, @bitcode-framework/ui-web-components/bc-view-tree, @bitcode-framework/ui-web-components/bc-view-report, @bitcode-framework/ui-web-components/bc-view-editor, @bitcode-framework/ui-web-components/bc-view-activity';
// All bc-* tags work as JSX — they're standard Web Components
// Set props via attributes or ref

export default function Demo() {
  return (
    <>
      {/* bc-view-list */}
      <bc-view-list model="contact" fields={["name","email"]}></bc-view-list>

      {/* bc-view-form */}
      <bc-view-form model="contact" fields={["name","email","phone"]}></bc-view-form>

      {/* bc-view-kanban */}
      <bc-view-kanban model="lead" fields={["name","stage"]}></bc-view-kanban>

      {/* bc-view-calendar */}
      <bc-view-calendar model="event" fields={["name","start","end"]}></bc-view-calendar>

      {/* bc-view-gantt */}
      <bc-view-gantt tasks={[{"id":"1","text":"Task 1","start":"2024-01-01","duration":5}]}></bc-view-gantt>

      {/* bc-view-map */}
      <bc-view-map model="branch" fields={["name","lat","lng"]}></bc-view-map>

      {/* bc-view-tree */}
      <bc-view-tree model="category" fields={["name","parent"]}></bc-view-tree>

      {/* bc-view-report */}
      <bc-view-report model="sale" fields={["name","amount"]}></bc-view-report>

      {/* bc-view-editor */}
      <bc-view-editor modelFields={[{"name":"name","type":"string"}]}></bc-view-editor>

      {/* bc-view-activity */}
      <bc-view-activity model="contact" fields={["name","desc"]}></bc-view-activity>
    </>
  );
}
<template>
  <!-- bc-view-list -->
  <bc-view-list model="contact" fields='["name","email"]'></bc-view-list>

  <!-- bc-view-form -->
  <bc-view-form model="contact" fields='["name","email","phone"]'></bc-view-form>

  <!-- bc-view-kanban -->
  <bc-view-kanban model="lead" fields='["name","stage"]'></bc-view-kanban>

  <!-- bc-view-calendar -->
  <bc-view-calendar model="event" fields='["name","start","end"]'></bc-view-calendar>

  <!-- bc-view-gantt -->
  <bc-view-gantt tasks='[{"id":"1","text":"Task 1","start":"2024-01-01","duration":5}]'></bc-view-gantt>

  <!-- bc-view-map -->
  <bc-view-map model="branch" fields='["name","lat","lng"]'></bc-view-map>

  <!-- bc-view-tree -->
  <bc-view-tree model="category" fields='["name","parent"]'></bc-view-tree>

  <!-- bc-view-report -->
  <bc-view-report model="sale" fields='["name","amount"]'></bc-view-report>

  <!-- bc-view-editor -->
  <bc-view-editor model-fields='[{"name":"name","type":"string"}]'></bc-view-editor>

  <!-- bc-view-activity -->
  <bc-view-activity model="contact" fields='["name","desc"]'></bc-view-activity>
</template>

<script setup>
// No import needed — bc-* components are registered globally
// via '@bitcode-framework/ui-web-components' loader in main.ts
</script>
<!-- app-demo.component.html -->
<!-- Add CUSTOM_ELEMENTS_SCHEMA to your module -->
<!-- bc-view-list -->
<bc-view-list model="contact" fields='["name","email"]'></bc-view-list>

<!-- bc-view-form -->
<bc-view-form model="contact" fields='["name","email","phone"]'></bc-view-form>

<!-- bc-view-kanban -->
<bc-view-kanban model="lead" fields='["name","stage"]'></bc-view-kanban>

<!-- bc-view-calendar -->
<bc-view-calendar model="event" fields='["name","start","end"]'></bc-view-calendar>

<!-- bc-view-gantt -->
<bc-view-gantt tasks='[{"id":"1","text":"Task 1","start":"2024-01-01","duration":5}]'></bc-view-gantt>

<!-- bc-view-map -->
<bc-view-map model="branch" fields='["name","lat","lng"]'></bc-view-map>

<!-- bc-view-tree -->
<bc-view-tree model="category" fields='["name","parent"]'></bc-view-tree>

<!-- bc-view-report -->
<bc-view-report model="sale" fields='["name","amount"]'></bc-view-report>

<!-- bc-view-editor -->
<bc-view-editor model-fields='[{"name":"name","type":"string"}]'></bc-view-editor>

<!-- bc-view-activity -->
<bc-view-activity model="contact" fields='["name","desc"]'></bc-view-activity>
Widgets

bc-badge

Inline badge/tag with color variants.

bc-progress

Progress bar with percentage display.

bc-priority

bc-handle

Drag handle for reordering.

bc-copy

bc-url

bc-email

bc-phone

bc-domain

Domain filter builder display.

bc-statusbar

bc-placeholder

bc-sync-status

Offline sync status indicator.

📦 Framework Examples (12 components)
<!-- 12 components — Vanilla HTML -->
<!-- bc-badge -->
<bc-badge value="Active" variant="success"></bc-badge>

<!-- bc-progress -->
<bc-progress value="65" max="100"></bc-progress>

<!-- bc-priority -->
<bc-priority value="3" label="High"></bc-priority>

<!-- bc-handle -->
<bc-handle></bc-handle>

<!-- bc-copy -->
<bc-copy value="https://example.com"></bc-copy>

<!-- bc-url -->
<bc-url value="https://example.com"></bc-url>

<!-- bc-email -->
<bc-email value="hello@example.com"></bc-email>

<!-- bc-phone -->
<bc-phone value="+6281234567890"></bc-phone>

<!-- bc-domain -->
<bc-domain value='[["status","=","active"]]'></bc-domain>

<!-- bc-statusbar -->
<bc-statusbar states='[{"label":"Draft","value":"draft"}]' value="draft"></bc-statusbar>

<!-- bc-placeholder -->
<bc-placeholder text="No data"></bc-placeholder>

<!-- bc-sync-status -->
<bc-sync-status compact></bc-sync-status>
import '@bitcode-framework/ui-web-components/bc-badge, @bitcode-framework/ui-web-components/bc-progress, @bitcode-framework/ui-web-components/bc-priority, @bitcode-framework/ui-web-components/bc-handle, @bitcode-framework/ui-web-components/bc-copy, @bitcode-framework/ui-web-components/bc-url, @bitcode-framework/ui-web-components/bc-email, @bitcode-framework/ui-web-components/bc-phone, @bitcode-framework/ui-web-components/bc-domain, @bitcode-framework/ui-web-components/bc-statusbar, @bitcode-framework/ui-web-components/bc-placeholder, @bitcode-framework/ui-web-components/bc-sync-status';
// All bc-* tags work as JSX — they're standard Web Components
// Set props via attributes or ref

export default function Demo() {
  return (
    <>
      {/* bc-badge */}
      <bc-badge value="Active" variant="success"></bc-badge>

      {/* bc-progress */}
      <bc-progress value="65" max="100"></bc-progress>

      {/* bc-priority */}
      <bc-priority value="3" label="High"></bc-priority>

      {/* bc-handle */}
      <bc-handle></bc-handle>

      {/* bc-copy */}
      <bc-copy value="https://example.com"></bc-copy>

      {/* bc-url */}
      <bc-url value="https://example.com"></bc-url>

      {/* bc-email */}
      <bc-email value="hello@example.com"></bc-email>

      {/* bc-phone */}
      <bc-phone value="+6281234567890"></bc-phone>

      {/* bc-domain */}
      <bc-domain value={[["status","=","active"]]}></bc-domain>

      {/* bc-statusbar */}
      <bc-statusbar states={[{"label":"Draft","value":"draft"}]} value="draft"></bc-statusbar>

      {/* bc-placeholder */}
      <bc-placeholder text="No data"></bc-placeholder>

      {/* bc-sync-status */}
      <bc-sync-status compact={true}></bc-sync-status>
    </>
  );
}
<template>
  <!-- bc-badge -->
  <bc-badge value="Active" variant="success"></bc-badge>

  <!-- bc-progress -->
  <bc-progress value="65" max="100"></bc-progress>

  <!-- bc-priority -->
  <bc-priority value="3" label="High"></bc-priority>

  <!-- bc-handle -->
  <bc-handle></bc-handle>

  <!-- bc-copy -->
  <bc-copy value="https://example.com"></bc-copy>

  <!-- bc-url -->
  <bc-url value="https://example.com"></bc-url>

  <!-- bc-email -->
  <bc-email value="hello@example.com"></bc-email>

  <!-- bc-phone -->
  <bc-phone value="+6281234567890"></bc-phone>

  <!-- bc-domain -->
  <bc-domain value='[["status","=","active"]]'></bc-domain>

  <!-- bc-statusbar -->
  <bc-statusbar states='[{"label":"Draft","value":"draft"}]' value="draft"></bc-statusbar>

  <!-- bc-placeholder -->
  <bc-placeholder text="No data"></bc-placeholder>

  <!-- bc-sync-status -->
  <bc-sync-status compact></bc-sync-status>
</template>

<script setup>
// No import needed — bc-* components are registered globally
// via '@bitcode-framework/ui-web-components' loader in main.ts
</script>
<!-- app-demo.component.html -->
<!-- Add CUSTOM_ELEMENTS_SCHEMA to your module -->
<!-- bc-badge -->
<bc-badge value="Active" variant="success"></bc-badge>

<!-- bc-progress -->
<bc-progress value="65" max="100"></bc-progress>

<!-- bc-priority -->
<bc-priority value="3" label="High"></bc-priority>

<!-- bc-handle -->
<bc-handle></bc-handle>

<!-- bc-copy -->
<bc-copy value="https://example.com"></bc-copy>

<!-- bc-url -->
<bc-url value="https://example.com"></bc-url>

<!-- bc-email -->
<bc-email value="hello@example.com"></bc-email>

<!-- bc-phone -->
<bc-phone value="+6281234567890"></bc-phone>

<!-- bc-domain -->
<bc-domain value='[["status","=","active"]]'></bc-domain>

<!-- bc-statusbar -->
<bc-statusbar states='[{"label":"Draft","value":"draft"}]' value="draft"></bc-statusbar>

<!-- bc-placeholder -->
<bc-placeholder text="No data"></bc-placeholder>

<!-- bc-sync-status -->
<bc-sync-status compact></bc-sync-status>
Print

bc-print

bc-export

📦 Framework Examples (3 components)
<!-- 3 components — Vanilla HTML -->
<!-- bc-print -->
<bc-print><h1>Invoice</h1><p>Content to print</p></bc-print>

<!-- bc-export -->
<bc-export model="contact" format="csv"></bc-export>

<!-- bc-report-link -->
<bc-report-link report="sales-summary" title="Sales Report"></bc-report-link>
import '@bitcode-framework/ui-web-components/bc-print, @bitcode-framework/ui-web-components/bc-export, @bitcode-framework/ui-web-components/bc-report-link';
// All bc-* tags work as JSX — they're standard Web Components
// Set props via attributes or ref

export default function Demo() {
  return (
    <>
      {/* bc-print */}
      <bc-print><h1>Invoice</h1><p>Content to print</p></bc-print>

      {/* bc-export */}
      <bc-export model="contact" format="csv"></bc-export>

      {/* bc-report-link */}
      <bc-report-link report="sales-summary" title="Sales Report"></bc-report-link>
    </>
  );
}
<template>
  <!-- bc-print -->
  <bc-print><h1>Invoice</h1><p>Content to print</p></bc-print>

  <!-- bc-export -->
  <bc-export model="contact" format="csv"></bc-export>

  <!-- bc-report-link -->
  <bc-report-link report="sales-summary" title="Sales Report"></bc-report-link>
</template>

<script setup>
// No import needed — bc-* components are registered globally
// via '@bitcode-framework/ui-web-components' loader in main.ts
</script>
<!-- app-demo.component.html -->
<!-- Add CUSTOM_ELEMENTS_SCHEMA to your module -->
<!-- bc-print -->
<bc-print><h1>Invoice</h1><p>Content to print</p></bc-print>

<!-- bc-export -->
<bc-export model="contact" format="csv"></bc-export>

<!-- bc-report-link -->
<bc-report-link report="sales-summary" title="Sales Report"></bc-report-link>
Search

bc-favorites

Saved filter favorites.

📦 Framework Examples (2 components)
<!-- 2 components — Vanilla HTML -->
<!-- bc-search -->
<bc-search placeholder="Search..." model="contact"></bc-search>

<!-- bc-favorites -->
<bc-favorites model="contact"></bc-favorites>
import '@bitcode-framework/ui-web-components/bc-search, @bitcode-framework/ui-web-components/bc-favorites';
// All bc-* tags work as JSX — they're standard Web Components
// Set props via attributes or ref

export default function Demo() {
  return (
    <>
      {/* bc-search */}
      <bc-search placeholder="Search..." model="contact"></bc-search>

      {/* bc-favorites */}
      <bc-favorites model="contact"></bc-favorites>
    </>
  );
}
<template>
  <!-- bc-search -->
  <bc-search placeholder="Search..." model="contact"></bc-search>

  <!-- bc-favorites -->
  <bc-favorites model="contact"></bc-favorites>
</template>

<script setup>
// No import needed — bc-* components are registered globally
// via '@bitcode-framework/ui-web-components' loader in main.ts
</script>
<!-- app-demo.component.html -->
<!-- Add CUSTOM_ELEMENTS_SCHEMA to your module -->
<!-- bc-search -->
<bc-search placeholder="Search..." model="contact"></bc-search>

<!-- bc-favorites -->
<bc-favorites model="contact"></bc-favorites>
Social

bc-chatter

Odoo-style comment feed with messages, notes, and system activity.

bc-timeline

Audit timeline showing field change history for a record.

bc-activity

Activity scheduler for calls, meetings, and to-dos.

📦 Framework Examples (3 components)
<!-- 3 components — Vanilla HTML -->
<!-- bc-chatter -->
<bc-chatter model="contact" record-id="1"></bc-chatter>

<!-- bc-timeline -->
<bc-timeline model="contact" record-id="1"></bc-timeline>

<!-- bc-activity -->
<bc-activity model="contact" record-id="1"></bc-activity>
import '@bitcode-framework/ui-web-components/bc-chatter, @bitcode-framework/ui-web-components/bc-timeline, @bitcode-framework/ui-web-components/bc-activity';
// All bc-* tags work as JSX — they're standard Web Components
// Set props via attributes or ref

export default function Demo() {
  return (
    <>
      {/* bc-chatter */}
      <bc-chatter model="contact" record-id="1"></bc-chatter>

      {/* bc-timeline */}
      <bc-timeline model="contact" record-id="1"></bc-timeline>

      {/* bc-activity */}
      <bc-activity model="contact" record-id="1"></bc-activity>
    </>
  );
}
<template>
  <!-- bc-chatter -->
  <bc-chatter model="contact" record-id="1"></bc-chatter>

  <!-- bc-timeline -->
  <bc-timeline model="contact" record-id="1"></bc-timeline>

  <!-- bc-activity -->
  <bc-activity model="contact" record-id="1"></bc-activity>
</template>

<script setup>
// No import needed — bc-* components are registered globally
// via '@bitcode-framework/ui-web-components' loader in main.ts
</script>
<!-- app-demo.component.html -->
<!-- Add CUSTOM_ELEMENTS_SCHEMA to your module -->
<!-- bc-chatter -->
<bc-chatter model="contact" record-id="1"></bc-chatter>

<!-- bc-timeline -->
<bc-timeline model="contact" record-id="1"></bc-timeline>

<!-- bc-activity -->
<bc-activity model="contact" record-id="1"></bc-activity>