@atelier-ui/angular 0.0.3 → 0.0.4

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atelier-ui/angular",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "description": "Atelier UI component library for Angular — LLM-optimised, accessible, design-token-driven",
5
5
  "keywords": [
6
6
  "angular",
@@ -20,8 +20,11 @@
20
20
  "peerDependencies": {
21
21
  "@angular/core": "^21.0.0",
22
22
  "@angular/common": "^21.0.0",
23
- "@angular/forms": "^21.0.0",
24
- "@atelier-ui/spec": "*"
23
+ "@angular/forms": "^21.0.0"
24
+ },
25
+ "dependencies": {
26
+ "@atelier-ui/spec": "*",
27
+ "tslib": "^2.3.0"
25
28
  },
26
29
  "module": "fesm2022/atelier-ui-angular.mjs",
27
30
  "typings": "types/atelier-ui-angular.d.ts",
@@ -34,8 +37,5 @@
34
37
  "default": "./fesm2022/atelier-ui-angular.mjs"
35
38
  }
36
39
  },
37
- "sideEffects": false,
38
- "dependencies": {
39
- "tslib": "^2.3.0"
40
- }
40
+ "sideEffects": false
41
41
  }
@@ -1137,6 +1137,8 @@ declare class LlmProgress {
1137
1137
  * ```
1138
1138
  */
1139
1139
  declare class LlmBreadcrumbs {
1140
+ readonly separator: _angular_core.InputSignal<string | undefined>;
1141
+ protected readonly separatorCssVar: _angular_core.Signal<string>;
1140
1142
  private readonly _itemIds;
1141
1143
  private _nextId;
1142
1144
  /** @internal — used by LlmBreadcrumbItem via LLM_BREADCRUMBS token */
@@ -1146,7 +1148,7 @@ declare class LlmBreadcrumbs {
1146
1148
  /** @internal */
1147
1149
  unregisterItem(id: number): void;
1148
1150
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<LlmBreadcrumbs, never>;
1149
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<LlmBreadcrumbs, "llm-breadcrumbs", never, {}, {}, never, ["*"], true, never>;
1151
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LlmBreadcrumbs, "llm-breadcrumbs", never, { "separator": { "alias": "separator"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1150
1152
  }
1151
1153
  /**
1152
1154
  * A single breadcrumb step. The last item is automatically treated as
@@ -1274,5 +1276,160 @@ interface LlmDrawerContext {
1274
1276
  }
1275
1277
  declare const LLM_DRAWER: InjectionToken<LlmDrawerContext>;
1276
1278
 
1277
- export { LLM_ACCORDION_GROUP, LLM_BREADCRUMBS, LLM_DIALOG, LLM_DRAWER, LLM_RADIO_GROUP, LLM_SELECT, LLM_TAB_GROUP, LlmAccordionGroup, LlmAccordionHeader, LlmAccordionItem, LlmAlert, LlmAvatar, LlmAvatarGroup, LlmBadge, LlmBreadcrumbItem, LlmBreadcrumbs, LlmButton, LlmCard, LlmCardContent, LlmCardFooter, LlmCardHeader, LlmCheckbox, LlmDialog, LlmDialogContent, LlmDialogFooter, LlmDialogHeader, LlmDrawer, LlmDrawerContent, LlmDrawerFooter, LlmDrawerHeader, LlmInput, LlmMenu, LlmMenuItem, LlmMenuSeparator, LlmMenuTrigger, LlmOption, LlmPagination, LlmProgress, LlmRadio, LlmRadioGroup, LlmSelect, LlmSkeleton, LlmTab, LlmTabGroup, LlmTextarea, LlmToast, LlmToastContainer, LlmToastService, LlmToggle, LlmTooltip };
1278
- export type { LlmAccordionGroupContext, LlmBreadcrumbsContext, LlmDialogContext, LlmDrawerContext, LlmRadioGroupContext, LlmSelectContext, LlmTabGroupContext, PageItem, TabInfo, ToastData, ToastOptions };
1279
+ interface LlmTableContext {
1280
+ readonly size: Signal<'sm' | 'md' | 'lg'>;
1281
+ readonly variant: Signal<'default' | 'striped' | 'bordered'>;
1282
+ }
1283
+ declare const LLM_TABLE: InjectionToken<LlmTableContext>;
1284
+ /**
1285
+ * Accessible data table with sorting, row selection, sticky header, and empty state.
1286
+ * Compose with `llm-thead`, `llm-tbody`, `llm-tr`, `llm-th`, and `llm-td`.
1287
+ *
1288
+ * Usage:
1289
+ * ```html
1290
+ * <llm-table variant="striped" [stickyHeader]="true">
1291
+ * <llm-thead>
1292
+ * <llm-tr>
1293
+ * <llm-th sortable [sortDirection]="sort" (sort)="sort = $event">Name</llm-th>
1294
+ * <llm-th>Status</llm-th>
1295
+ * </llm-tr>
1296
+ * </llm-thead>
1297
+ * <llm-tbody [empty]="rows.length === 0" [colSpan]="2">
1298
+ * @for (row of rows; track row.id) {
1299
+ * <llm-tr selectable [selected]="selection.has(row.id)" (selectedChange)="toggle(row.id, $event)">
1300
+ * <llm-td>{{ row.name }}</llm-td>
1301
+ * <llm-td>{{ row.status }}</llm-td>
1302
+ * </llm-tr>
1303
+ * }
1304
+ * <div llmTableEmpty>No results found.</div>
1305
+ * </llm-tbody>
1306
+ * </llm-table>
1307
+ * ```
1308
+ */
1309
+ declare class LlmTable implements LlmTableContext {
1310
+ /** Visual style of the table rows. */
1311
+ readonly variant: _angular_core.InputSignal<"default" | "bordered" | "striped">;
1312
+ /** Row density. */
1313
+ readonly size: _angular_core.InputSignal<"sm" | "md" | "lg">;
1314
+ /** Whether the header row sticks to the top when the table scrolls. */
1315
+ readonly stickyHeader: _angular_core.InputSignal<boolean>;
1316
+ /** @internal */
1317
+ protected readonly hostClasses: Signal<string>;
1318
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LlmTable, never>;
1319
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LlmTable, "llm-table", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1320
+ }
1321
+ /**
1322
+ * Table head section. Contains header rows with `llm-tr` and `llm-th`.
1323
+ *
1324
+ * Usage:
1325
+ * ```html
1326
+ * <llm-thead>
1327
+ * <llm-tr>
1328
+ * <llm-th sortable [sortDirection]="sort" (sort)="sort = $event">Name</llm-th>
1329
+ * </llm-tr>
1330
+ * </llm-thead>
1331
+ * ```
1332
+ */
1333
+ declare class LlmThead {
1334
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LlmThead, never>;
1335
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LlmThead, "llm-thead", never, {}, {}, never, ["*"], true, never>;
1336
+ }
1337
+ /**
1338
+ * Table body section. Shows rows or an empty state.
1339
+ *
1340
+ * Usage:
1341
+ * ```html
1342
+ * <llm-tbody [empty]="rows.length === 0" [colSpan]="3">
1343
+ * @for (row of rows; track row.id) {
1344
+ * <llm-tr><llm-td>{{ row.name }}</llm-td></llm-tr>
1345
+ * }
1346
+ * <div llmTableEmpty>No results found.</div>
1347
+ * </llm-tbody>
1348
+ * ```
1349
+ */
1350
+ declare class LlmTbody {
1351
+ /** When true, hides rows and shows the `[llmTableEmpty]` slot content instead. */
1352
+ readonly empty: _angular_core.InputSignal<boolean>;
1353
+ /** Number of columns to span in the empty-state row. Should match total column count. */
1354
+ readonly colSpan: _angular_core.InputSignal<number>;
1355
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LlmTbody, never>;
1356
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LlmTbody, "llm-tbody", never, { "empty": { "alias": "empty"; "required": false; "isSignal": true; }; "colSpan": { "alias": "colSpan"; "required": false; "isSignal": true; }; }, {}, never, ["*", "[llmTableEmpty]"], true, never>;
1357
+ }
1358
+ /**
1359
+ * Table row. Use inside `llm-thead` or `llm-tbody`.
1360
+ * Set `selectable` to auto-add a checkbox column for row selection.
1361
+ *
1362
+ * Usage:
1363
+ * ```html
1364
+ * <llm-tr selectable [selected]="isSelected" (selectedChange)="toggle($event)">
1365
+ * <llm-td>Cell content</llm-td>
1366
+ * </llm-tr>
1367
+ * ```
1368
+ */
1369
+ declare class LlmTr {
1370
+ /** Whether this row is currently selected. */
1371
+ readonly selected: _angular_core.InputSignal<boolean>;
1372
+ /** Whether this row shows a selection checkbox. */
1373
+ readonly selectable: _angular_core.InputSignal<boolean>;
1374
+ /** Optional identifier for this row. Useful for tracking selection. */
1375
+ readonly rowId: _angular_core.InputSignal<string | undefined>;
1376
+ /** Emits when the row's checkbox is toggled. */
1377
+ readonly selectedChange: _angular_core.OutputEmitterRef<boolean>;
1378
+ /** @internal */
1379
+ protected readonly hostClasses: Signal<"" | "is-selectable">;
1380
+ /** @internal — applied to inner <tr> for CSS selection styling */
1381
+ protected readonly innerClasses: Signal<"" | "is-selected">;
1382
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LlmTr, never>;
1383
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LlmTr, "llm-tr", never, { "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "rowId": { "alias": "rowId"; "required": false; "isSignal": true; }; }, { "selectedChange": "selectedChange"; }, never, ["*"], true, never>;
1384
+ }
1385
+ /** Sort direction for sortable column headers. */
1386
+ type LlmSortDirection = 'asc' | 'desc' | null;
1387
+ /**
1388
+ * Table header cell. Set `sortable` to enable sort cycling.
1389
+ * The consumer controls `sortDirection` (fully controlled — no internal state).
1390
+ *
1391
+ * Usage:
1392
+ * ```html
1393
+ * <llm-th sortable [sortDirection]="nameSortDir" (sort)="nameSortDir = $event">Name</llm-th>
1394
+ * ```
1395
+ */
1396
+ declare class LlmTh {
1397
+ /** Whether this column is sortable. Renders a sort button when true. */
1398
+ readonly sortable: _angular_core.InputSignal<boolean>;
1399
+ /** Current sort direction. Fully controlled — the consumer owns this state. */
1400
+ readonly sortDirection: _angular_core.InputSignal<LlmSortDirection>;
1401
+ /** Text alignment of the header cell content. */
1402
+ readonly align: _angular_core.InputSignal<"center" | "start" | "end">;
1403
+ /** Fixed column width (e.g. `'120px'`, `'10rem'`). */
1404
+ readonly width: _angular_core.InputSignal<string | undefined>;
1405
+ /**
1406
+ * Emits when the header is clicked.
1407
+ * Cycles: `null` → `'asc'` → `'desc'` → `null`.
1408
+ */
1409
+ readonly sort: _angular_core.OutputEmitterRef<LlmSortDirection>;
1410
+ /** @internal */
1411
+ protected readonly ariaSort: Signal<"none" | "ascending" | "descending" | undefined>;
1412
+ /** @internal */
1413
+ protected readonly cellClasses: Signal<string>;
1414
+ /** @internal */
1415
+ protected cycleSort(): void;
1416
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LlmTh, never>;
1417
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LlmTh, "llm-th", never, { "sortable": { "alias": "sortable"; "required": false; "isSignal": true; }; "sortDirection": { "alias": "sortDirection"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; }, { "sort": "sort"; }, never, ["*", "*"], true, never>;
1418
+ }
1419
+ /**
1420
+ * Table data cell. Use inside `llm-tr` inside `llm-tbody`.
1421
+ *
1422
+ * Usage:
1423
+ * ```html
1424
+ * <llm-td align="end">{{ value }}</llm-td>
1425
+ * ```
1426
+ */
1427
+ declare class LlmTd {
1428
+ /** Text alignment of the cell content. */
1429
+ readonly align: _angular_core.InputSignal<"center" | "start" | "end">;
1430
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LlmTd, never>;
1431
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LlmTd, "llm-td", never, { "align": { "alias": "align"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1432
+ }
1433
+
1434
+ export { LLM_ACCORDION_GROUP, LLM_BREADCRUMBS, LLM_DIALOG, LLM_DRAWER, LLM_RADIO_GROUP, LLM_SELECT, LLM_TABLE, LLM_TAB_GROUP, LlmAccordionGroup, LlmAccordionHeader, LlmAccordionItem, LlmAlert, LlmAvatar, LlmAvatarGroup, LlmBadge, LlmBreadcrumbItem, LlmBreadcrumbs, LlmButton, LlmCard, LlmCardContent, LlmCardFooter, LlmCardHeader, LlmCheckbox, LlmDialog, LlmDialogContent, LlmDialogFooter, LlmDialogHeader, LlmDrawer, LlmDrawerContent, LlmDrawerFooter, LlmDrawerHeader, LlmInput, LlmMenu, LlmMenuItem, LlmMenuSeparator, LlmMenuTrigger, LlmOption, LlmPagination, LlmProgress, LlmRadio, LlmRadioGroup, LlmSelect, LlmSkeleton, LlmTab, LlmTabGroup, LlmTable, LlmTbody, LlmTd, LlmTextarea, LlmTh, LlmThead, LlmToast, LlmToastContainer, LlmToastService, LlmToggle, LlmTooltip, LlmTr };
1435
+ export type { LlmAccordionGroupContext, LlmBreadcrumbsContext, LlmDialogContext, LlmDrawerContext, LlmRadioGroupContext, LlmSelectContext, LlmSortDirection, LlmTabGroupContext, LlmTableContext, PageItem, TabInfo, ToastData, ToastOptions };