@joanroucoux/cairn-ui 0.6.1 → 0.6.3

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.
@@ -748,22 +748,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
748
748
  }], ctorParameters: () => [], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], busy: [{ type: i0.Input, args: [{ isSignal: true, alias: "busy", required: false }] }] } });
749
749
 
750
750
  /** Available card variants. `CardVariant` is derived from this tuple. */
751
- const CARD_VARIANTS = ['default', 'elevated'];
751
+ const CARD_VARIANTS = ['default', 'elevated', 'inset'];
752
752
  /** Available card paddings. `CardPadding` is derived from this tuple. */
753
- const CARD_PADDINGS = ['none', 'sm', 'md', 'list', 'rows'];
753
+ const CARD_PADDINGS = ['none', 'xs', 'sm', 'md', 'list', 'rows', 'recap', 'panel'];
754
754
  /** Where the card surface (fill, border, radius) and its padding apply. `CardSurface` is derived from this tuple. */
755
755
  const CARD_SURFACES = ['always', 'lg', 'max-lg'];
756
+ /** Border of the card surface; `auto` follows the variant. `CardBorder` is derived from this tuple. */
757
+ const CARD_BORDERS = ['auto', 'none', 'border', 'hairline'];
756
758
  const BASE_CLASSES$3 = 'block';
757
759
  const VARIANT_CLASSES = {
758
760
  default: {
759
- always: 'rounded-container bg-(--card) shadow-[inset_0_0_0_1px_var(--border)] text-(--card-foreground)',
760
- lg: 'lg:rounded-container lg:bg-(--card) lg:shadow-[inset_0_0_0_1px_var(--border)] lg:text-(--card-foreground)',
761
- 'max-lg': 'max-lg:rounded-container max-lg:bg-(--card) max-lg:shadow-[inset_0_0_0_1px_var(--border)] max-lg:text-(--card-foreground)',
761
+ always: 'rounded-container bg-(--card) text-(--card-foreground)',
762
+ lg: 'lg:rounded-container lg:bg-(--card) lg:text-(--card-foreground)',
763
+ 'max-lg': 'max-lg:rounded-container max-lg:bg-(--card) max-lg:text-(--card-foreground)',
762
764
  },
763
765
  elevated: {
764
- always: 'rounded-container bg-(--elevated) shadow-[inset_0_0_0_1px_var(--hairline)] text-(--foreground)',
765
- lg: 'lg:rounded-container lg:bg-(--elevated) lg:shadow-[inset_0_0_0_1px_var(--hairline)] lg:text-(--foreground)',
766
- 'max-lg': 'max-lg:rounded-container max-lg:bg-(--elevated) max-lg:shadow-[inset_0_0_0_1px_var(--hairline)] max-lg:text-(--foreground)',
766
+ always: 'rounded-container bg-(--elevated) text-(--foreground)',
767
+ lg: 'lg:rounded-container lg:bg-(--elevated) lg:text-(--foreground)',
768
+ 'max-lg': 'max-lg:rounded-container max-lg:bg-(--elevated) max-lg:text-(--foreground)',
769
+ },
770
+ inset: {
771
+ always: 'rounded-control bg-(--background) text-(--foreground)',
772
+ lg: 'lg:rounded-control lg:bg-(--background) lg:text-(--foreground)',
773
+ 'max-lg': 'max-lg:rounded-control max-lg:bg-(--background) max-lg:text-(--foreground)',
774
+ },
775
+ };
776
+ const AUTO_BORDERS = {
777
+ default: 'border',
778
+ elevated: 'hairline',
779
+ inset: 'none',
780
+ };
781
+ const BORDER_CLASSES = {
782
+ none: { always: '', lg: '', 'max-lg': '' },
783
+ border: {
784
+ always: 'shadow-[inset_0_0_0_1px_var(--border)]',
785
+ lg: 'lg:shadow-[inset_0_0_0_1px_var(--border)]',
786
+ 'max-lg': 'max-lg:shadow-[inset_0_0_0_1px_var(--border)]',
787
+ },
788
+ hairline: {
789
+ always: 'shadow-[inset_0_0_0_1px_var(--hairline)]',
790
+ lg: 'lg:shadow-[inset_0_0_0_1px_var(--hairline)]',
791
+ 'max-lg': 'max-lg:shadow-[inset_0_0_0_1px_var(--hairline)]',
767
792
  },
768
793
  };
769
794
  const PADDING_CLASSES$1 = {
@@ -772,6 +797,11 @@ const PADDING_CLASSES$1 = {
772
797
  lg: 'lg:p-0',
773
798
  'max-lg': 'max-lg:p-0',
774
799
  },
800
+ xs: {
801
+ always: 'p-1',
802
+ lg: 'lg:p-1',
803
+ 'max-lg': 'max-lg:p-1',
804
+ },
775
805
  sm: {
776
806
  always: 'p-3',
777
807
  lg: 'lg:p-3',
@@ -792,14 +822,27 @@ const PADDING_CLASSES$1 = {
792
822
  lg: 'lg:px-(--inset-card) lg:py-1',
793
823
  'max-lg': 'max-lg:px-(--inset-card) max-lg:py-1',
794
824
  },
825
+ recap: {
826
+ always: 'px-3 py-1',
827
+ lg: 'lg:px-3 lg:py-1',
828
+ 'max-lg': 'max-lg:px-3 max-lg:py-1',
829
+ },
830
+ panel: {
831
+ always: 'px-3 py-2.5 lg:px-4 lg:py-3',
832
+ lg: 'lg:px-4 lg:py-3',
833
+ 'max-lg': 'max-lg:px-3 max-lg:py-2.5',
834
+ },
795
835
  };
796
836
  /**
797
837
  * Surface that groups related content: a summary block, a table, a side panel. `surface` limits the
798
838
  * fill, border, radius and padding to one side of `64rem`, for a block that is a card on a desktop and
799
- * plain on an iPhone, or the reverse.
839
+ * plain on an iPhone, or the reverse. `variant="inset"` is the `--background` box that sits inside a
840
+ * card or a dialog: a picked title, a results list, a recap, an empty-state panel.
800
841
  *
801
842
  * @example
802
843
  * <ui-card variant="elevated" padding="sm">Total</ui-card>
844
+ * <ui-card variant="inset" border="hairline" padding="xs">Results</ui-card>
845
+ * <ui-card padding="none" clip>Table that touches the edges, clipped to the corners</ui-card>
803
846
  * <ui-card surface="max-lg">Card on an iPhone, plain on a desktop</ui-card>
804
847
  */
805
848
  class UiCard {
@@ -809,10 +852,26 @@ class UiCard {
809
852
  ...(ngDevMode ? [{ debugName: "padding" }] : /* istanbul ignore next */ []));
810
853
  surface = input('always', /* @ts-ignore */
811
854
  ...(ngDevMode ? [{ debugName: "surface" }] : /* istanbul ignore next */ []));
812
- classes = computed(() => `${BASE_CLASSES$3} ${VARIANT_CLASSES[this.variant()][this.surface()]} ${PADDING_CLASSES$1[this.padding()][this.surface()]}`, /* @ts-ignore */
855
+ border = input('auto', /* @ts-ignore */
856
+ ...(ngDevMode ? [{ debugName: "border" }] : /* istanbul ignore next */ []));
857
+ clip = input(false, { ...(ngDevMode ? { debugName: "clip" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
858
+ classes = computed(() => {
859
+ const variant = this.variant();
860
+ const surface = this.surface();
861
+ const border = this.border();
862
+ return [
863
+ BASE_CLASSES$3,
864
+ VARIANT_CLASSES[variant][surface],
865
+ BORDER_CLASSES[border === 'auto' ? AUTO_BORDERS[variant] : border][surface],
866
+ PADDING_CLASSES$1[this.padding()][surface],
867
+ this.clip() ? 'overflow-hidden' : '',
868
+ ]
869
+ .filter(Boolean)
870
+ .join(' ');
871
+ }, /* @ts-ignore */
813
872
  ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
814
873
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: UiCard, deps: [], target: i0.ɵɵFactoryTarget.Component });
815
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: UiCard, isStandalone: true, selector: "ui-card", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, padding: { classPropertyName: "padding", publicName: "padding", isSignal: true, isRequired: false, transformFunction: null }, surface: { classPropertyName: "surface", publicName: "surface", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: '<ng-content />', isInline: true });
874
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: UiCard, isStandalone: true, selector: "ui-card", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, padding: { classPropertyName: "padding", publicName: "padding", isSignal: true, isRequired: false, transformFunction: null }, surface: { classPropertyName: "surface", publicName: "surface", isSignal: true, isRequired: false, transformFunction: null }, border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null }, clip: { classPropertyName: "clip", publicName: "clip", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: '<ng-content />', isInline: true });
816
875
  }
817
876
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: UiCard, decorators: [{
818
877
  type: Component,
@@ -823,7 +882,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
823
882
  '[class]': 'classes()',
824
883
  },
825
884
  }]
826
- }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], padding: [{ type: i0.Input, args: [{ isSignal: true, alias: "padding", required: false }] }], surface: [{ type: i0.Input, args: [{ isSignal: true, alias: "surface", required: false }] }] } });
885
+ }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], padding: [{ type: i0.Input, args: [{ isSignal: true, alias: "padding", required: false }] }], surface: [{ type: i0.Input, args: [{ isSignal: true, alias: "surface", required: false }] }], border: [{ type: i0.Input, args: [{ isSignal: true, alias: "border", required: false }] }], clip: [{ type: i0.Input, args: [{ isSignal: true, alias: "clip", required: false }] }] } });
827
886
 
828
887
  /**
829
888
  * Resolves to the styled control projected into a field.
@@ -1852,16 +1911,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
1852
1911
  }] });
1853
1912
 
1854
1913
  /** Available fact row sizes. `FactSize` is derived from this tuple. */
1855
- const FACT_SIZES = ['md', 'sm', 'auto'];
1914
+ const FACT_SIZES = ['md', 'sm', 'auto', 'recap'];
1856
1915
  /** Colour of the line under a fact value. `stale` flags an out-of-date figure. */
1857
1916
  const FACT_SUB_TONES = ['subtle', 'stale'];
1858
1917
  const SIZE_CLASSES$2 = {
1859
- md: { row: 'py-3 [&:not(:first-child)]:shadow-[inset_0_1px_0_var(--hairline)]', value: 'text-body' },
1860
- sm: { row: 'py-2.5', value: 'text-label' },
1918
+ md: { row: 'gap-4 py-3 [&:not(:first-child)]:shadow-[inset_0_1px_0_var(--hairline)]', value: 'text-body' },
1919
+ sm: { row: 'gap-4 py-2.5', value: 'text-label' },
1861
1920
  auto: {
1862
- row: 'py-3 lg:py-2.5 max-lg:[&:not(:first-child)]:shadow-[inset_0_1px_0_var(--hairline)]',
1921
+ row: 'gap-4 py-3 lg:py-2.5 max-lg:[&:not(:first-child)]:shadow-[inset_0_1px_0_var(--hairline)]',
1863
1922
  value: 'text-body lg:text-label',
1864
1923
  },
1924
+ recap: { row: 'gap-3 py-[9px] [&:not(:first-child)]:shadow-[inset_0_1px_0_var(--hairline)]', value: 'text-label' },
1865
1925
  };
1866
1926
  const SUB_TONE_CLASSES$1 = {
1867
1927
  subtle: 'text-(--subtle-foreground)',
@@ -1878,7 +1938,7 @@ const SUB_TONE_CLASSES$1 = {
1878
1938
  */
1879
1939
  class UiFacts {
1880
1940
  ruled = input(false, { ...(ngDevMode ? { debugName: "ruled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
1881
- classes = computed(() => `m-0 flex flex-col${this.ruled() ? ' shadow-[inset_0_1px_0_var(--hairline)]' : ''}`, /* @ts-ignore */
1941
+ classes = computed(() => this.ruled() ? 'm-0 flex flex-col shadow-[inset_0_1px_0_var(--hairline)]' : 'm-0 flex flex-col', /* @ts-ignore */
1882
1942
  ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
1883
1943
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: UiFacts, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1884
1944
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.7", type: UiFacts, isStandalone: true, selector: "dl[uiFacts]", inputs: { ruled: { classPropertyName: "ruled", publicName: "ruled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0 });
@@ -1906,7 +1966,7 @@ class UiFact {
1906
1966
  ...(ngDevMode ? [{ debugName: "subTone" }] : /* istanbul ignore next */ []));
1907
1967
  size = input('md', /* @ts-ignore */
1908
1968
  ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
1909
- classes = computed(() => `flex items-baseline justify-between gap-4 ${SIZE_CLASSES$2[this.size()].row}`, /* @ts-ignore */
1969
+ classes = computed(() => `flex items-baseline justify-between ${SIZE_CLASSES$2[this.size()].row}`, /* @ts-ignore */
1910
1970
  ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
1911
1971
  valueClasses = computed(() => `${SIZE_CLASSES$2[this.size()].value} tabular-nums`, /* @ts-ignore */
1912
1972
  ...(ngDevMode ? [{ debugName: "valueClasses" }] : /* istanbul ignore next */ []));
@@ -2040,7 +2100,13 @@ class UiField {
2040
2100
  ...(ngDevMode ? [{ debugName: "leading" }] : /* istanbul ignore next */ []));
2041
2101
  trailing = contentChild(UiFieldTrailing, /* @ts-ignore */
2042
2102
  ...(ngDevMode ? [{ debugName: "trailing" }] : /* istanbul ignore next */ []));
2043
- rowClasses = computed(() => `relative flex items-center${this.leading() ? ' [&>input]:pl-[38px]' : ''}${this.trailing() ? ' [&>input]:pr-12 lg:[&>input]:pr-11' : ''}`, /* @ts-ignore */
2103
+ rowClasses = computed(() => [
2104
+ 'relative flex items-center',
2105
+ this.leading() ? '[&>input]:pl-[38px]' : '',
2106
+ this.trailing() ? '[&>input]:pr-12 lg:[&>input]:pr-11' : '',
2107
+ ]
2108
+ .filter(Boolean)
2109
+ .join(' '), /* @ts-ignore */
2044
2110
  ...(ngDevMode ? [{ debugName: "rowClasses" }] : /* istanbul ignore next */ []));
2045
2111
  labelClasses = computed(() => this.labelHidden() ? 'sr-only' : 'text-label leading-[17px] font-medium text-(--muted-foreground)', /* @ts-ignore */
2046
2112
  ...(ngDevMode ? [{ debugName: "labelClasses" }] : /* istanbul ignore next */ []));
@@ -3368,7 +3434,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
3368
3434
  */
3369
3435
  class UiListRow {
3370
3436
  ruled = input(true, { ...(ngDevMode ? { debugName: "ruled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
3371
- classes = computed(() => `flex min-h-18 items-center gap-3 py-1.5 lg:min-h-17${this.ruled() ? ' shadow-[inset_0_-1px_0_var(--hairline)]' : ''}`, /* @ts-ignore */
3437
+ classes = computed(() => this.ruled()
3438
+ ? 'flex min-h-18 items-center gap-3 py-1.5 lg:min-h-17 shadow-[inset_0_-1px_0_var(--hairline)]'
3439
+ : 'flex min-h-18 items-center gap-3 py-1.5 lg:min-h-17', /* @ts-ignore */
3372
3440
  ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
3373
3441
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: UiListRow, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3374
3442
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.7", type: UiListRow, isStandalone: true, selector: "[uiListRow]", inputs: { ruled: { classPropertyName: "ruled", publicName: "ruled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0 });
@@ -3380,6 +3448,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
3380
3448
  host: { '[class]': 'classes()' },
3381
3449
  }]
3382
3450
  }], propDecorators: { ruled: [{ type: i0.Input, args: [{ isSignal: true, alias: "ruled", required: false }] }] } });
3451
+ /**
3452
+ * The 36px filled tile that leads a row: an icon on a muted square with the control radius. Put it on
3453
+ * a `span` as the first child of a `ui-row` or a `uiListRow`.
3454
+ *
3455
+ * @example
3456
+ * <a ui-row size="xl" padding="sm" href="/export">
3457
+ * <span uiRowTile><svg lucideDownload [size]="18" /></span>
3458
+ * Export
3459
+ * </a>
3460
+ */
3461
+ class UiRowTile {
3462
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: UiRowTile, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3463
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: UiRowTile, isStandalone: true, selector: "[uiRowTile]", host: { classAttribute: "rounded-control grid size-9 flex-none place-items-center bg-(--muted)" }, ngImport: i0 });
3464
+ }
3465
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: UiRowTile, decorators: [{
3466
+ type: Directive,
3467
+ args: [{
3468
+ selector: '[uiRowTile]',
3469
+ host: { class: 'rounded-control grid size-9 flex-none place-items-center bg-(--muted)' },
3470
+ }]
3471
+ }] });
3383
3472
 
3384
3473
  const nextId = (() => {
3385
3474
  let count = 0;
@@ -4150,5 +4239,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
4150
4239
  * Generated bundle index. Do not edit.
4151
4240
  */
4152
4241
 
4153
- export { ALERT_VARIANTS, AMOUNT_MASKINGS, AMOUNT_NUMERICS, ASYNC_ALIGNS, ASYNC_STATES, ASYNC_VARIANTS, AVATAR_SIZES, BACK_LINK_SIZES, BADGE_SIZES, BADGE_VARIANTS, BUTTON_SIZES, BUTTON_VARIANTS, CARD_PADDINGS, CARD_SURFACES, CARD_VARIANTS, CELL_BREAKPOINTS, CONTROL_SIZES, CONTROL_SURFACES, DELTA_EMPHASES, DELTA_SIZES, DELTA_WEIGHTS, DIALOG_LAYOUTS, DIALOG_WIDTHS, FACT_SIZES, FACT_SUB_TONES, GROUP_SIZES, METER_SIZES, METER_TONES, ROW_GAPS, ROW_PADDINGS, ROW_SIZES, SEGMENTED_SIZES, SKELETON_SHAPES, STAT_SIZES, SUB_TONES, TABLE_ROWS, UI_AMOUNT_MASKED, UiActionBar, UiAlert, UiAmount, UiAsync, UiAvatar, UiAvatarLink, UiBackLink, UiBadge, UiButton, UiCard, UiCellSub, UiChoiceChips, UiDelta, UiDialog, UiDonut, UiExternalLink, UiFact, UiFacts, UiField, UiFieldLeading, UiFieldTrailing, UiFilterChips, UiGroup, UiGroupCell, UiInput, UiLineChart, UiListRow, UiMenu, UiMenuItem, UiMenuTrigger, UiMeter, UiNavItem, UiRow, UiRowAction, UiRowItem, UiRowLink, UiSegmented, UiSelect, UiSkeleton, UiStat, UiSwitch, UiTab, UiTabBar, UiTable, UiTd, UiTextarea, UiTh, UiTr, formatAmount };
4242
+ export { ALERT_VARIANTS, AMOUNT_MASKINGS, AMOUNT_NUMERICS, ASYNC_ALIGNS, ASYNC_STATES, ASYNC_VARIANTS, AVATAR_SIZES, BACK_LINK_SIZES, BADGE_SIZES, BADGE_VARIANTS, BUTTON_SIZES, BUTTON_VARIANTS, CARD_PADDINGS, CARD_SURFACES, CARD_VARIANTS, CELL_BREAKPOINTS, CONTROL_SIZES, CONTROL_SURFACES, DELTA_EMPHASES, DELTA_SIZES, DELTA_WEIGHTS, DIALOG_LAYOUTS, DIALOG_WIDTHS, FACT_SIZES, FACT_SUB_TONES, GROUP_SIZES, METER_SIZES, METER_TONES, ROW_GAPS, ROW_PADDINGS, ROW_SIZES, SEGMENTED_SIZES, SKELETON_SHAPES, STAT_SIZES, SUB_TONES, TABLE_ROWS, UI_AMOUNT_MASKED, UiActionBar, UiAlert, UiAmount, UiAsync, UiAvatar, UiAvatarLink, UiBackLink, UiBadge, UiButton, UiCard, UiCellSub, UiChoiceChips, UiDelta, UiDialog, UiDonut, UiExternalLink, UiFact, UiFacts, UiField, UiFieldLeading, UiFieldTrailing, UiFilterChips, UiGroup, UiGroupCell, UiInput, UiLineChart, UiListRow, UiMenu, UiMenuItem, UiMenuTrigger, UiMeter, UiNavItem, UiRow, UiRowAction, UiRowItem, UiRowLink, UiRowTile, UiSegmented, UiSelect, UiSkeleton, UiStat, UiSwitch, UiTab, UiTabBar, UiTable, UiTd, UiTextarea, UiTh, UiTr, formatAmount };
4154
4243
  //# sourceMappingURL=joanroucoux-cairn-ui.mjs.map