@veevarts/design-system 2.1.0-beta.2 → 2.1.0-beta.20

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.
Files changed (214) hide show
  1. package/README.md +39 -0
  2. package/dist/components/Drawer/Drawer.d.ts +17 -0
  3. package/dist/components/Drawer/index.d.ts +2 -0
  4. package/dist/components/Modal/CloseButton.d.ts +18 -0
  5. package/dist/components/Modal/Modal.d.ts +15 -0
  6. package/dist/components/Modal/index.d.ts +2 -0
  7. package/dist/components/Modal/useLabelledCloseButton.d.ts +13 -0
  8. package/dist/components/Select/Select.d.ts +10 -0
  9. package/dist/components/Table/Table.d.ts +7 -0
  10. package/dist/components/Table/index.d.ts +2 -0
  11. package/dist/components/index.d.ts +6 -0
  12. package/dist/index.cjs +5 -5
  13. package/dist/index.d.ts +4 -0
  14. package/dist/index.js +9332 -5319
  15. package/dist/patterns/ActivityTimeline/ActivityTimeline.d.ts +3 -0
  16. package/dist/patterns/ActivityTimeline/index.d.ts +2 -0
  17. package/dist/patterns/ActivityTimeline/styles.d.ts +15 -0
  18. package/dist/patterns/ActivityTimeline/types.d.ts +15 -0
  19. package/dist/patterns/AdminTable/AdminTable.d.ts +1 -0
  20. package/dist/patterns/AdminTable/styles.d.ts +6 -0
  21. package/dist/patterns/AdminToolbar/AdminToolbar.d.ts +13 -2
  22. package/dist/patterns/AdminToolbar/index.d.ts +1 -0
  23. package/dist/patterns/AdminToolbar/styles.d.ts +49 -0
  24. package/dist/patterns/AdminToolbar/types.d.ts +2 -0
  25. package/dist/patterns/AmountList/AmountList.d.ts +3 -0
  26. package/dist/patterns/AmountList/index.d.ts +2 -0
  27. package/dist/patterns/AmountList/styles.d.ts +23 -0
  28. package/dist/patterns/AmountList/types.d.ts +26 -0
  29. package/dist/patterns/CardList/CardList.d.ts +3 -0
  30. package/dist/patterns/CardList/index.d.ts +2 -0
  31. package/dist/patterns/CardList/styles.d.ts +20 -0
  32. package/dist/patterns/CardList/types.d.ts +20 -0
  33. package/dist/patterns/CardStack/CardStack.d.ts +7 -0
  34. package/dist/patterns/CardStack/index.d.ts +2 -0
  35. package/dist/patterns/CardStack/styles.d.ts +2 -0
  36. package/dist/patterns/CashTenderForm/types.d.ts +6 -0
  37. package/dist/patterns/CellText/CellText.d.ts +16 -0
  38. package/dist/patterns/CellText/index.d.ts +2 -0
  39. package/dist/patterns/CellText/styles.d.ts +7 -0
  40. package/dist/patterns/DiscardGuard/DiscardGuard.d.ts +23 -0
  41. package/dist/patterns/DiscardGuard/context.d.ts +25 -0
  42. package/dist/patterns/DiscardGuard/index.d.ts +6 -0
  43. package/dist/patterns/DiscardGuard/useDiscardGuard.d.ts +38 -0
  44. package/dist/patterns/DonationAmounts/index.d.ts +1 -1
  45. package/dist/patterns/DonationAmounts/styles.d.ts +32 -0
  46. package/dist/patterns/DonationAmounts/types.d.ts +55 -1
  47. package/dist/patterns/DonationAmounts/utils/currency.d.ts +7 -3
  48. package/dist/patterns/EntityRow/EntityList.d.ts +9 -0
  49. package/dist/patterns/EntityRow/EntityRow.d.ts +3 -0
  50. package/dist/patterns/EntityRow/context.d.ts +2 -0
  51. package/dist/patterns/EntityRow/icons.d.ts +3 -0
  52. package/dist/patterns/EntityRow/index.d.ts +3 -0
  53. package/dist/patterns/EntityRow/initials.d.ts +6 -0
  54. package/dist/patterns/EntityRow/styles.d.ts +59 -0
  55. package/dist/patterns/EntityRow/types.d.ts +118 -0
  56. package/dist/patterns/FeedbackState/FeedbackState.d.ts +1 -1
  57. package/dist/patterns/FeedbackState/type.d.ts +11 -1
  58. package/dist/patterns/FilterSelect/FilterSelect.d.ts +3 -0
  59. package/dist/patterns/FilterSelect/FilterSelectGroup.d.ts +3 -0
  60. package/dist/patterns/FilterSelect/index.d.ts +3 -0
  61. package/dist/patterns/FilterSelect/styles.d.ts +17 -0
  62. package/dist/patterns/FilterSelect/types.d.ts +19 -0
  63. package/dist/patterns/InlineConfirm/InlineConfirm.d.ts +38 -0
  64. package/dist/patterns/InlineConfirm/index.d.ts +2 -0
  65. package/dist/patterns/InlineConfirm/styles.d.ts +16 -0
  66. package/dist/patterns/InstallmentSchedule/types.d.ts +29 -5
  67. package/dist/patterns/InstallmentSchedule/utils.d.ts +6 -0
  68. package/dist/patterns/KeyValueChip/KeyValueChip.d.ts +1 -0
  69. package/dist/patterns/KeyValueRows/KeyValueRows.d.ts +13 -0
  70. package/dist/patterns/KeyValueRows/index.d.ts +2 -0
  71. package/dist/patterns/KeyValueRows/styles.d.ts +8 -0
  72. package/dist/patterns/LineItemRows/LineItemRows.d.ts +17 -0
  73. package/dist/patterns/LineItemRows/index.d.ts +2 -0
  74. package/dist/patterns/LineItemRows/styles.d.ts +13 -0
  75. package/dist/patterns/ListPanel/ListPanel.d.ts +2 -0
  76. package/dist/patterns/LoadMoreFooter/LoadMoreFooter.d.ts +3 -0
  77. package/dist/patterns/LoadMoreFooter/index.d.ts +2 -0
  78. package/dist/patterns/LoadMoreFooter/styles.d.ts +7 -0
  79. package/dist/patterns/LoadMoreFooter/types.d.ts +10 -0
  80. package/dist/patterns/MetaCard/types.d.ts +2 -0
  81. package/dist/patterns/ModalPanels/ModalPanels.d.ts +35 -0
  82. package/dist/patterns/ModalPanels/context.d.ts +20 -0
  83. package/dist/patterns/ModalPanels/focus.d.ts +44 -0
  84. package/dist/patterns/ModalPanels/index.d.ts +6 -0
  85. package/dist/patterns/ModalPanels/styles.d.ts +13 -0
  86. package/dist/patterns/ModalPanels/useModalPanels.d.ts +30 -0
  87. package/dist/patterns/Notice/Notice.d.ts +16 -0
  88. package/dist/patterns/Notice/index.d.ts +2 -0
  89. package/dist/patterns/Notice/styles.d.ts +35 -0
  90. package/dist/patterns/Notice/type.d.ts +39 -0
  91. package/dist/patterns/OutcomeView/index.d.ts +1 -1
  92. package/dist/patterns/OutcomeView/types.d.ts +110 -3
  93. package/dist/patterns/PageHeader/PageHeader.d.ts +1 -0
  94. package/dist/patterns/PaginationSummary/PaginationSummary.d.ts +12 -0
  95. package/dist/patterns/PaginationSummary/index.d.ts +1 -1
  96. package/dist/patterns/PaymentSubAmountInput/PaymentSubAmountInput.d.ts +2 -0
  97. package/dist/patterns/PillTabs/PillTabs.d.ts +3 -0
  98. package/dist/patterns/PillTabs/ids.d.ts +9 -0
  99. package/dist/patterns/PillTabs/index.d.ts +3 -0
  100. package/dist/patterns/PillTabs/styles.d.ts +20 -0
  101. package/dist/patterns/PillTabs/types.d.ts +21 -0
  102. package/dist/patterns/{CatalogItemCard → Programs/CatalogItemCard}/type.d.ts +1 -1
  103. package/dist/patterns/{EventDetails → Programs/EventDetails}/EventDetails.d.ts +3 -1
  104. package/dist/patterns/{OfferCard → Programs/OfferCard}/OfferCard.d.ts +1 -1
  105. package/dist/patterns/{OfferCard → Programs/OfferCard}/types.d.ts +7 -0
  106. package/dist/patterns/Programs/ProgramListItem/ProgramListItem.d.ts +17 -0
  107. package/dist/patterns/Programs/ProgramListItem/index.d.ts +2 -0
  108. package/dist/patterns/Programs/index.d.ts +5 -0
  109. package/dist/patterns/ReasonSelect/types.d.ts +1 -0
  110. package/dist/patterns/RecordCard/RecordCard.d.ts +3 -0
  111. package/dist/patterns/RecordCard/index.d.ts +2 -0
  112. package/dist/patterns/RecordCard/styles.d.ts +16 -0
  113. package/dist/patterns/RecordCard/types.d.ts +22 -0
  114. package/dist/patterns/RecordHeader/RecordHeader.d.ts +3 -0
  115. package/dist/patterns/RecordHeader/index.d.ts +2 -0
  116. package/dist/patterns/RecordHeader/styles.d.ts +43 -0
  117. package/dist/patterns/RecordHeader/types.d.ts +30 -0
  118. package/dist/patterns/RecordLayout/RecordLayout.d.ts +3 -0
  119. package/dist/patterns/RecordLayout/index.d.ts +2 -0
  120. package/dist/patterns/RecordLayout/styles.d.ts +8 -0
  121. package/dist/patterns/RecordLayout/types.d.ts +6 -0
  122. package/dist/patterns/RecordTotals/RecordTotals.d.ts +19 -0
  123. package/dist/patterns/RecordTotals/index.d.ts +2 -0
  124. package/dist/patterns/RecordTotals/styles.d.ts +19 -0
  125. package/dist/patterns/RefundMethodCards/RefundMethodCards.d.ts +4 -0
  126. package/dist/patterns/RefundMethodCards/index.d.ts +2 -0
  127. package/dist/patterns/RefundMethodCards/styles.d.ts +59 -0
  128. package/dist/patterns/RefundMethodCards/types.d.ts +72 -0
  129. package/dist/patterns/RefundProgressList/RefundProgressList.d.ts +4 -0
  130. package/dist/patterns/RefundProgressList/index.d.ts +2 -0
  131. package/dist/patterns/RefundProgressList/styles.d.ts +44 -0
  132. package/dist/patterns/RefundProgressList/types.d.ts +37 -0
  133. package/dist/patterns/RelatedRecordList/RelatedRecordList.d.ts +3 -0
  134. package/dist/patterns/RelatedRecordList/index.d.ts +2 -0
  135. package/dist/patterns/RelatedRecordList/styles.d.ts +19 -0
  136. package/dist/patterns/RelatedRecordList/types.d.ts +17 -0
  137. package/dist/patterns/SessionExpiredCard/SessionExpiredCard.d.ts +14 -0
  138. package/dist/patterns/SessionExpiredCard/index.d.ts +2 -0
  139. package/dist/patterns/SessionExpiredCard/type.d.ts +6 -0
  140. package/dist/patterns/SplitPaymentSummary/index.d.ts +1 -1
  141. package/dist/patterns/SplitPaymentSummary/types.d.ts +18 -0
  142. package/dist/patterns/StatTiles/StatTiles.d.ts +3 -0
  143. package/dist/patterns/StatTiles/index.d.ts +2 -0
  144. package/dist/patterns/StatTiles/styles.d.ts +8 -0
  145. package/dist/patterns/StatTiles/types.d.ts +12 -0
  146. package/dist/patterns/StatusChip/StatusChip.d.ts +3 -3
  147. package/dist/patterns/StepProgress/StepProgress.d.ts +4 -0
  148. package/dist/patterns/StepProgress/index.d.ts +2 -0
  149. package/dist/patterns/StepProgress/styles.d.ts +29 -0
  150. package/dist/patterns/StepProgress/types.d.ts +43 -0
  151. package/dist/patterns/Summary/components/ActionBar.d.ts +2 -0
  152. package/dist/patterns/Summary/components/GrandTotalRow.d.ts +1 -0
  153. package/dist/patterns/Summary/components/ItemRow.d.ts +1 -0
  154. package/dist/patterns/Summary/components/SummaryBody.d.ts +4 -1
  155. package/dist/patterns/Summary/components/TotalsLineRow.d.ts +3 -2
  156. package/dist/patterns/Summary/types.d.ts +51 -9
  157. package/dist/patterns/TableSkeleton/TableSkeleton.d.ts +1 -0
  158. package/dist/patterns/TileSelect/TileSelect.d.ts +80 -2
  159. package/dist/patterns/TileSelect/index.d.ts +1 -1
  160. package/dist/patterns/TileSelect/styles.d.ts +14 -0
  161. package/dist/patterns/ToolbarButton/ToolbarButton.d.ts +2 -0
  162. package/dist/patterns/UnderlineTabs/UnderlineTabs.d.ts +20 -1
  163. package/dist/patterns/UnderlineTabs/index.d.ts +1 -1
  164. package/dist/patterns/UnderlineTabs/styles.d.ts +10 -0
  165. package/dist/patterns/WizardShell/index.d.ts +1 -1
  166. package/dist/patterns/WizardShell/types.d.ts +9 -1
  167. package/dist/patterns/grid-columns.d.ts +1 -1
  168. package/dist/patterns/index.d.ts +69 -17
  169. package/dist/patterns/shared/hasContent.d.ts +2 -0
  170. package/dist/patterns/shared/index.d.ts +1 -0
  171. package/dist/patterns/shared/motion.d.ts +6 -0
  172. package/dist/patterns/shared/recordTone.d.ts +9 -0
  173. package/dist/patterns/shared/rem.d.ts +4 -0
  174. package/dist/patterns/shared/useContainerWidth.d.ts +6 -0
  175. package/dist/patterns/shared/useDecimalDraft.d.ts +33 -0
  176. package/dist/patterns/shared/usePrefillEdits.d.ts +7 -0
  177. package/dist/providers/DensityProvider.d.ts +7 -0
  178. package/dist/providers/HeroUIProvider.d.ts +20 -1
  179. package/dist/providers/ToastProvider.d.ts +16 -0
  180. package/dist/providers/close-label-context.d.ts +18 -0
  181. package/dist/providers/density.d.ts +17 -0
  182. package/dist/providers/index.d.ts +6 -0
  183. package/dist/tailwind/index.cjs +25 -1
  184. package/dist/tailwind/index.d.ts +39 -0
  185. package/dist/tailwind/index.mjs +25 -1
  186. package/dist/test/ReducedMotion.d.ts +4 -0
  187. package/dist/test/RootFontSize.d.ts +5 -0
  188. package/dist/test/container-width.d.ts +14 -0
  189. package/dist/test/contrast.d.ts +1 -0
  190. package/dist/test/px-class-names.d.ts +1 -0
  191. package/dist/test/px-classes.d.ts +3 -0
  192. package/dist/test/root-font-size.d.ts +8 -0
  193. package/dist/tokens/pos-surface.d.ts +23 -4
  194. package/package.json +2 -2
  195. /package/dist/patterns/{CatalogItemCard → Programs/CatalogItemCard}/CatalogItemCard.d.ts +0 -0
  196. /package/dist/patterns/{CatalogItemCard → Programs/CatalogItemCard}/index.d.ts +0 -0
  197. /package/dist/patterns/{EventDetails → Programs/EventDetails}/index.d.ts +0 -0
  198. /package/dist/patterns/{OfferCard → Programs/OfferCard}/examples/CustomQuantitySelectorExample.d.ts +0 -0
  199. /package/dist/patterns/{OfferCard → Programs/OfferCard}/examples/ListWithEurosCurrencyExample.d.ts +0 -0
  200. /package/dist/patterns/{OfferCard → Programs/OfferCard}/examples/ListWithoutAnimationExample.d.ts +0 -0
  201. /package/dist/patterns/{OfferCard → Programs/OfferCard}/examples/index.d.ts +0 -0
  202. /package/dist/patterns/{OfferCard → Programs/OfferCard}/index.d.ts +0 -0
  203. /package/dist/patterns/{OfferCard → Programs/OfferCard}/utils/animations.d.ts +0 -0
  204. /package/dist/patterns/{OfferCard → Programs/OfferCard}/utils/currency.d.ts +0 -0
  205. /package/dist/patterns/{OfferCard → Programs/OfferCard}/utils/index.d.ts +0 -0
  206. /package/dist/patterns/{OfferCard → Programs/OfferCard}/utils/offers.d.ts +0 -0
  207. /package/dist/patterns/{OfferCard → Programs/OfferCard}/variants/OfferCardEmpty.d.ts +0 -0
  208. /package/dist/patterns/{OfferCard → Programs/OfferCard}/variants/OfferCardError.d.ts +0 -0
  209. /package/dist/patterns/{OfferCard → Programs/OfferCard}/variants/OfferCardList.d.ts +0 -0
  210. /package/dist/patterns/{OfferCard → Programs/OfferCard}/variants/OfferCardSkeleton.d.ts +0 -0
  211. /package/dist/patterns/{OfferCard → Programs/OfferCard}/variants/index.d.ts +0 -0
  212. /package/dist/patterns/{SessionTimeline → Programs/SessionTimeline}/SessionTimeline.d.ts +0 -0
  213. /package/dist/patterns/{SessionTimeline → Programs/SessionTimeline}/index.d.ts +0 -0
  214. /package/dist/patterns/{SessionTimeline → Programs/SessionTimeline}/type.d.ts +0 -0
@@ -0,0 +1,3 @@
1
+ import { default as React } from 'react';
2
+ import { ActivityTimelineProps } from './types';
3
+ export declare const ActivityTimeline: React.FC<ActivityTimelineProps>;
@@ -0,0 +1,2 @@
1
+ export { ActivityTimeline } from './ActivityTimeline';
2
+ export type { ActivityTimelineProps, ActivityTimelineEvent } from './types';
@@ -0,0 +1,15 @@
1
+ export declare const activityTimelineClass: {
2
+ readonly list: "m-0 list-none p-0 pl-0.5";
3
+ readonly event: "flex gap-3.5";
4
+ readonly eventSpaced: "pb-4";
5
+ readonly rail: "flex flex-none flex-col items-center";
6
+ readonly dot: "mt-[0.3125rem] size-2.5 rounded-full";
7
+ readonly connector: "mt-1 w-[1.5px] flex-1 bg-pos-hair";
8
+ readonly body: "min-w-0 flex-1 pb-0.5";
9
+ readonly head: "flex min-w-0 flex-wrap items-baseline gap-x-3";
10
+ readonly title: "min-w-0 text-[0.90625rem] font-semibold text-default-900 [overflow-wrap:anywhere]";
11
+ readonly timestamp: "ml-auto min-w-0 max-w-full text-[0.8125rem] tabular-nums text-default-500 [overflow-wrap:anywhere]";
12
+ readonly detail: "mt-[0.1875rem] min-w-0 text-[0.84375rem] leading-[1.5] text-default-500 [overflow-wrap:anywhere]";
13
+ readonly actor: "mt-[0.1875rem] min-w-0 text-[0.78125rem] text-default-500 [overflow-wrap:anywhere]";
14
+ readonly empty: "text-[0.875rem] text-default-500";
15
+ };
@@ -0,0 +1,15 @@
1
+ import { ReactNode } from 'react';
2
+ import { RecordTone } from '../shared/recordTone';
3
+ export interface ActivityTimelineEvent {
4
+ id: string;
5
+ tone: RecordTone;
6
+ title: ReactNode;
7
+ timestamp: ReactNode;
8
+ detail?: ReactNode;
9
+ actor?: ReactNode;
10
+ }
11
+ export interface ActivityTimelineProps {
12
+ events: ActivityTimelineEvent[];
13
+ emptyContent?: ReactNode;
14
+ 'data-testid'?: string;
15
+ }
@@ -35,6 +35,7 @@ export interface AdminTableProps {
35
35
  footer?: React.ReactNode;
36
36
  /** Accessible name. Required: a table with no name is unnavigable by screen reader. */
37
37
  ariaLabel: string;
38
+ variant?: 'default' | 'framed';
38
39
  className?: string;
39
40
  classNames?: AdminTableClassNames;
40
41
  'data-testid'?: string;
@@ -42,3 +42,9 @@ export declare const adminRowClass = "border-t border-acct-hair transition-color
42
42
  export declare const adminTableClass = "w-full";
43
43
  /** The strip under the table where a pager sits. */
44
44
  export declare const adminTableFooterClass = "border-t border-acct-border px-5 py-3.5";
45
+ export declare const adminTableFramedClass: {
46
+ readonly base: "overflow-x-auto";
47
+ readonly th: "h-auto whitespace-nowrap border-b border-pos-hair bg-transparent px-4 py-[0.875rem] text-left text-[0.6875rem] font-semibold uppercase leading-[1.5] tracking-[.055em] text-default-500 first:rounded-none last:rounded-none last:pr-3";
48
+ readonly tr: "border-t border-pos-hair transition-colors duration-[120ms] first:border-t-0 data-[focus-visible=true]:outline-offset-[-2px] [tbody>&]:hover:bg-default-50 [tbody>&]:data-[hover=true]:bg-default-50 motion-reduce:transition-none [html[data-pos-reduce-motion=true]_&]:transition-none";
49
+ readonly td: "h-[3.875rem] px-4 data-[focus-visible=true]:outline-offset-[-2px] py-[0.625rem] align-middle text-[0.875rem] text-default-900 last:pr-3";
50
+ };
@@ -1,4 +1,5 @@
1
1
  import { default as React } from 'react';
2
+ import { AdminToolbarSearchWidth, AdminToolbarSize } from './types';
2
3
  export interface AdminToolbarProps {
3
4
  searchValue: string;
4
5
  onSearchChange: (value: string) => void;
@@ -8,12 +9,22 @@ export interface AdminToolbarProps {
8
9
  searchPlaceholder?: string;
9
10
  /** Leading glyph inside the search box. */
10
11
  searchIcon?: React.ReactNode;
12
+ /** Shows a clear button inside the search box while it holds text. Off by default. */
13
+ searchClearable?: boolean;
14
+ /** The clear button's accessible name. `'Clear search'` by default; pass a translation. */
15
+ clearLabel?: string;
11
16
  /** Filters, sort pickers, a toggle — laid out after the search box. */
12
17
  children?: React.ReactNode;
13
18
  /** Pushed to the far right, for a primary action. */
14
19
  trailing?: React.ReactNode;
15
- /** Search box width. `'md'` (280px) by default, `'lg'` (360px) for wide tables. */
16
- searchWidth?: 'md' | 'lg';
20
+ /**
21
+ * Search box width. `'md'` (280px; 250px framed) by default, `'lg'` (360px)
22
+ * for wide tables, `'fill'` to grow into the space the row leaves.
23
+ */
24
+ searchWidth?: AdminToolbarSearchWidth;
25
+ /** `'lg'` is the 48px touch field with 16px text; `'md'` (default) keeps each variant's own height. */
26
+ size?: AdminToolbarSize;
27
+ variant?: 'default' | 'framed';
17
28
  className?: string;
18
29
  'data-testid'?: string;
19
30
  }
@@ -1,2 +1,3 @@
1
1
  export { AdminToolbar } from './AdminToolbar';
2
2
  export type { AdminToolbarProps } from './AdminToolbar';
3
+ export type { AdminToolbarSearchWidth, AdminToolbarSize } from './types';
@@ -0,0 +1,49 @@
1
+ import { AdminToolbarSearchWidth, AdminToolbarSize } from './types';
2
+ /** The default variant: a pixel-port of the accounting mockups, so its values stay in px. */
3
+ export declare const DEFAULT_CLASS: {
4
+ readonly base: "flex flex-wrap items-center gap-3 mb-4";
5
+ readonly trailing: "ml-auto";
6
+ readonly icon: "flex text-acct-muted";
7
+ readonly inputWrapper: string;
8
+ readonly input: "text-[13.5px] text-acct-ink";
9
+ };
10
+ export declare const DEFAULT_SEARCH_WIDTH: Record<AdminToolbarSearchWidth, string>;
11
+ export declare const FRAMED_WIDE_REM = 48;
12
+ export declare const FRAMED_CLASS: {
13
+ readonly base: "flex flex-wrap items-center gap-2.5 border-b border-pos-hair px-4 py-[0.875rem]";
14
+ readonly narrow: "[&_[data-slot=filter-select-group]]:flex [&_[data-slot=filter-select-group]]:flex-wrap [&_[data-slot=filter-select-group]]:!max-w-none [&_[data-slot=filter-select]]:!max-w-none [&_[data-slot=filter-select]]:!min-w-[calc(50%-0.3125rem)] [&_[data-slot=filter-select]]:grow [&_[data-slot=filter-select]]:basis-[calc(50%-0.3125rem)]";
15
+ readonly searchWide: "ml-auto";
16
+ /** Fill wins over the narrow rule: it already takes the row, and keeps a trailing action beside it until 12.5rem. */
17
+ readonly searchFill: "min-w-[12.5rem] flex-1";
18
+ readonly searchNarrow: "basis-full";
19
+ readonly inputBaseNarrow: "w-full";
20
+ readonly inputWrapper: "h-[2.375rem] min-h-[2.375rem] !h-[2.375rem] rounded-[0.625rem] border border-pos-field bg-white pl-3 pr-3 shadow-none data-[hover=true]:border-pos-field group-data-[focus=true]:border-primary";
21
+ readonly innerWrapper: "gap-[0.3125rem]";
22
+ readonly input: "text-ellipsis text-[0.875rem] text-default-900 data-[has-start-content=true]:ps-0.5";
23
+ readonly icon: "flex text-default-400 [&_svg]:size-4";
24
+ };
25
+ export declare const FRAMED_SEARCH_WIDTH: Record<AdminToolbarSearchWidth, string>;
26
+ /**
27
+ * `lg` is the POS register's touch row: a 48px field with 16px text and a 20px
28
+ * glyph, in rem so the text-size setting scales it. Merged after either
29
+ * variant's own classes, so it overrides their height and type only.
30
+ */
31
+ export declare const LG_CLASS: {
32
+ readonly inputWrapper: "h-12 min-h-12 !h-12";
33
+ readonly input: "text-base";
34
+ readonly icon: "[&_svg]:size-5";
35
+ };
36
+ /**
37
+ * The clear control: a DS `Button`, so it is in the tab order and takes a
38
+ * translated name, unlike HeroUI's `isClearable` (tabIndex -1, English label).
39
+ * 32px inside the 38–40px fields, 44px inside the 48px one.
40
+ */
41
+ export declare const CLEAR_CLASS: {
42
+ readonly button: "shrink-0 text-default-500";
43
+ /** The browser's own search "x" would sit beside ours. */
44
+ readonly input: "[&::-webkit-search-cancel-button]:appearance-none";
45
+ };
46
+ export declare const CLEAR_SIZE_CLASS: Record<AdminToolbarSize, {
47
+ button: string;
48
+ icon: string;
49
+ }>;
@@ -0,0 +1,2 @@
1
+ export type AdminToolbarSearchWidth = 'md' | 'lg' | 'fill';
2
+ export type AdminToolbarSize = 'md' | 'lg';
@@ -0,0 +1,3 @@
1
+ import { default as React } from 'react';
2
+ import { AmountListProps } from './types';
3
+ export declare const AmountList: React.FC<AmountListProps>;
@@ -0,0 +1,2 @@
1
+ export { AmountList } from './AmountList';
2
+ export type { AmountListProps, AmountListRow } from './types';
@@ -0,0 +1,23 @@
1
+ export declare const amountListClass: {
2
+ readonly base: "w-full";
3
+ readonly list: "m-0 list-none p-0";
4
+ readonly item: "border-t border-pos-hair";
5
+ readonly row: "flex w-full items-start gap-3 px-5 py-3 text-left";
6
+ readonly rowInteractive: "cursor-pointer outline-none transition-colors hover:bg-default-50 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-primary motion-reduce:transition-none [html[data-pos-reduce-motion=true]_&]:transition-none";
7
+ readonly dot: "mt-[0.4375rem] size-[0.4375rem] shrink-0 rounded-full";
8
+ readonly body: "flex min-w-0 flex-1 flex-col";
9
+ readonly title: "text-[0.875rem] font-semibold text-default-900 [overflow-wrap:anywhere] [text-wrap:pretty]";
10
+ readonly meta: "mt-1 flex min-w-0 flex-wrap items-center gap-[0.4375rem] text-[0.78125rem] text-default-500";
11
+ readonly reference: "min-w-0 font-normal text-primary [overflow-wrap:anywhere]";
12
+ readonly separator: "text-default-400";
13
+ readonly timestamp: "tabular-nums";
14
+ readonly detail: "mt-[0.1875rem] text-[0.78125rem] text-default-500 [overflow-wrap:anywhere] [text-wrap:pretty]";
15
+ readonly trailing: "max-w-[45%] min-w-min shrink-0 text-right text-[0.90625rem]";
16
+ readonly amount: "whitespace-nowrap text-[0.90625rem] font-bold tabular-nums text-default-900";
17
+ readonly note: "text-[0.78125rem] italic text-default-500 [overflow-wrap:anywhere]";
18
+ readonly footer: "flex items-baseline gap-3 border-t border-pos-line bg-pos-page px-5 py-[0.8125rem]";
19
+ readonly footerLabel: "min-w-0 text-[0.875rem] font-bold text-default-900 [overflow-wrap:anywhere]";
20
+ readonly footerAmount: "ml-auto whitespace-nowrap text-[1rem] font-bold tabular-nums text-default-900";
21
+ readonly footerNote: "border-t border-pos-hair px-5 py-[0.8125rem] text-[0.78125rem] leading-[1.6] text-default-500";
22
+ readonly empty: "px-5 pb-5 pt-[0.875rem] text-[0.875rem] text-default-500";
23
+ };
@@ -0,0 +1,26 @@
1
+ import { ReactNode } from 'react';
2
+ import { RecordTone } from '../shared/recordTone';
3
+ export interface AmountListRow {
4
+ id: string;
5
+ tone: RecordTone;
6
+ title: ReactNode;
7
+ reference?: ReactNode;
8
+ timestamp?: ReactNode;
9
+ detail?: ReactNode;
10
+ amount?: ReactNode;
11
+ amountTone?: 'positive' | 'negative' | 'neutral';
12
+ note?: ReactNode;
13
+ noteTone?: 'muted' | 'warn';
14
+ }
15
+ export interface AmountListProps {
16
+ rows: AmountListRow[];
17
+ footer?: {
18
+ label: ReactNode;
19
+ amount: ReactNode;
20
+ amountTone?: 'positive' | 'negative' | 'neutral';
21
+ note?: ReactNode;
22
+ };
23
+ emptyContent?: ReactNode;
24
+ onSelect?: (id: string) => void;
25
+ 'data-testid'?: string;
26
+ }
@@ -0,0 +1,3 @@
1
+ import { default as React } from 'react';
2
+ import { CardListProps } from './types';
3
+ export declare const CardList: React.FC<CardListProps>;
@@ -0,0 +1,2 @@
1
+ export { CardList } from './CardList';
2
+ export type { CardListProps, CardListItem } from './types';
@@ -0,0 +1,20 @@
1
+ export declare const cardListClass: {
2
+ readonly base: "w-full";
3
+ readonly list: "m-0 list-none p-0";
4
+ readonly item: "relative border-b border-pos-hair last:border-b-0";
5
+ readonly card: "block w-full px-4 py-[0.875rem] text-left";
6
+ readonly cardInteractive: "cursor-pointer outline-none transition-colors hover:bg-default-50 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-primary motion-reduce:transition-none [html[data-pos-reduce-motion=true]_&]:transition-none";
7
+ readonly headline: "flex items-baseline gap-2.5";
8
+ readonly headlineWithActions: "pr-[3.25rem]";
9
+ readonly title: "min-w-0 text-[0.90625rem] font-semibold text-primary [overflow-wrap:anywhere]";
10
+ readonly amount: "ml-auto shrink-0 whitespace-nowrap text-[0.9375rem] font-bold tabular-nums text-default-900";
11
+ readonly actions: "absolute right-4 top-[0.1875rem] z-[1]";
12
+ readonly chips: "mt-[0.5625rem] flex flex-wrap gap-1.5";
13
+ readonly chipsLine: "mt-[0.5625rem] flex items-center gap-2.5";
14
+ readonly chipsInline: "flex min-w-0 flex-wrap gap-1.5";
15
+ readonly rows: "mt-[0.5625rem] block";
16
+ readonly row: "flex items-baseline gap-3 py-[0.1875rem] text-[0.8125rem]";
17
+ readonly rowLabel: "shrink-0 text-default-500";
18
+ readonly rowValue: "ml-auto min-w-0 text-right text-default-700 [overflow-wrap:anywhere]";
19
+ readonly skeletonRow: "border-b border-pos-hair p-4 last:border-b-0";
20
+ };
@@ -0,0 +1,20 @@
1
+ import { ReactNode } from 'react';
2
+ export interface CardListItem {
3
+ id: string;
4
+ title: ReactNode;
5
+ amount?: ReactNode;
6
+ chips?: ReactNode;
7
+ rows?: Array<{
8
+ label: string;
9
+ value: ReactNode;
10
+ }>;
11
+ actions?: ReactNode;
12
+ }
13
+ export interface CardListProps {
14
+ items: CardListItem[];
15
+ ariaLabel: string;
16
+ onSelect?: (id: string) => void;
17
+ loading?: boolean;
18
+ skeletonCount?: number;
19
+ 'data-testid'?: string;
20
+ }
@@ -0,0 +1,7 @@
1
+ import { default as React } from 'react';
2
+ export type CardStackLayout = 'stack' | 'grid';
3
+ export interface CardStackProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ layout?: CardStackLayout;
5
+ 'data-testid'?: string;
6
+ }
7
+ export declare const CardStack: React.FC<CardStackProps>;
@@ -0,0 +1,2 @@
1
+ export { CardStack } from './CardStack';
2
+ export type { CardStackProps, CardStackLayout } from './CardStack';
@@ -0,0 +1,2 @@
1
+ import { CardStackLayout } from './CardStack';
2
+ export declare const cardStackClass: Record<CardStackLayout, string>;
@@ -29,6 +29,10 @@ export interface CashTenderLabels {
29
29
  * `{due}` is replaced with the formatted due amount.
30
30
  */
31
31
  insufficientMessageTemplate?: string;
32
+ exactAmountLabel?: string;
33
+ exactAmountAriaTemplate?: string;
34
+ quickAmountsLabel?: string;
35
+ quickAmountAriaTemplate?: string;
32
36
  }
33
37
  export interface CashTenderFormProps {
34
38
  /**
@@ -70,6 +74,8 @@ export interface CashTenderFormProps {
70
74
  * the guard is value-based. Omit for no cap.
71
75
  */
72
76
  maxAmount?: number;
77
+ quickAmounts?: readonly number[];
78
+ showExactAmount?: boolean;
73
79
  /**
74
80
  * Auto-focus the Cash Received field when this component mounts.
75
81
  * Pair with `key={...}` from the host to re-trigger focus on every
@@ -0,0 +1,16 @@
1
+ import { default as React } from 'react';
2
+ import { SignedAmountTone } from '../shared/recordTone';
3
+ export type CellTextVariant = 'text' | 'reference' | 'amount';
4
+ export interface CellTextProps {
5
+ variant?: CellTextVariant;
6
+ tone?: SignedAmountTone;
7
+ secondary?: React.ReactNode;
8
+ children: React.ReactNode;
9
+ 'data-testid'?: string;
10
+ }
11
+ export declare const CellText: React.FC<CellTextProps>;
12
+ export interface ChipStackProps {
13
+ children: React.ReactNode;
14
+ 'data-testid'?: string;
15
+ }
16
+ export declare const ChipStack: React.FC<ChipStackProps>;
@@ -0,0 +1,2 @@
1
+ export { CellText, ChipStack } from './CellText';
2
+ export type { CellTextProps, CellTextVariant, ChipStackProps } from './CellText';
@@ -0,0 +1,7 @@
1
+ import { CellTextVariant } from './CellText';
2
+ export declare const cellTextClass: {
3
+ readonly base: "whitespace-nowrap text-[0.875rem]";
4
+ readonly secondary: "text-default-500";
5
+ readonly chipStack: "inline-flex flex-col items-start gap-[0.3125rem]";
6
+ };
7
+ export declare const cellTextVariantClass: Record<CellTextVariant, string>;
@@ -0,0 +1,23 @@
1
+ import { default as React } from 'react';
2
+ import { DiscardGuardController } from './useDiscardGuard';
3
+ /** @internal Used by `ModalPanels` to make each panel its own guard scope. */
4
+ export declare const DiscardGuardScope: React.FC<{
5
+ scope: string;
6
+ children: React.ReactNode;
7
+ }>;
8
+ export interface DiscardGuardProps {
9
+ /** The controller from `useDiscardGuard()`. */
10
+ guard: DiscardGuardController;
11
+ children: React.ReactNode;
12
+ /** Confirmation heading. Default `'Discard changes?'`. */
13
+ title?: string;
14
+ /** What is lost by confirming. Default `'What you entered will be lost.'`. */
15
+ description?: React.ReactNode;
16
+ /** Confirm (discard) label. Default `'Discard'`. */
17
+ confirmLabel?: string;
18
+ /** Label of the action that returns to the form. Default `'Keep editing'`. */
19
+ keepEditingLabel?: string;
20
+ /** Root test id of the confirmation; derives `-confirm` and `-dismiss`. Default `'discard-guard'`. */
21
+ 'data-testid'?: string;
22
+ }
23
+ export declare const DiscardGuard: React.FC<DiscardGuardProps>;
@@ -0,0 +1,25 @@
1
+ import { DirtyReport, Leave } from './useDiscardGuard';
2
+ export interface DiscardGuardContextValue {
3
+ guardScope: (scope: string | null, leave: Leave) => void;
4
+ bypass: (leave: Leave) => void;
5
+ report: (id: string, report: DirtyReport) => void;
6
+ unreport: (id: string) => void;
7
+ }
8
+ export declare const DiscardGuardContext: import('react').Context<DiscardGuardContextValue>;
9
+ /** The scope a reporter or a Back press belongs to. `ModalPanels` sets one per panel. */
10
+ export declare const DiscardScopeContext: import('react').Context<string | null>;
11
+ /**
12
+ * Call from a form while it is mounted. Unmounting withdraws the report, so a
13
+ * form that is gone never holds an exit hostage.
14
+ */
15
+ export declare function useReportUnsavedChanges(isDirty: boolean): void;
16
+ export interface DiscardGuardActions {
17
+ /** Leave the whole surface: asks when any form is dirty. */
18
+ guard: (leave: Leave) => void;
19
+ /** Leave without asking — the input was saved. */
20
+ bypass: (leave: Leave) => void;
21
+ }
22
+ /** The guard's exits, for components rendered inside `<DiscardGuard>`. */
23
+ export declare function useDiscardGuardActions(): DiscardGuardActions;
24
+ /** @internal Back inside a panel: asks only when that panel holds unsaved input. */
25
+ export declare function useScopedDiscardGuard(): (leave: Leave) => void;
@@ -0,0 +1,6 @@
1
+ export { DiscardGuard } from './DiscardGuard';
2
+ export type { DiscardGuardProps } from './DiscardGuard';
3
+ export { useDiscardGuard } from './useDiscardGuard';
4
+ export type { DiscardGuardController } from './useDiscardGuard';
5
+ export { useDiscardGuardActions, useReportUnsavedChanges } from './context';
6
+ export type { DiscardGuardActions } from './context';
@@ -0,0 +1,38 @@
1
+ export type Leave = () => void;
2
+ /** One mounted reporter: which scope (panel) it belongs to and whether it holds unsaved input. */
3
+ export interface DirtyReport {
4
+ scope: string | null;
5
+ isDirty: boolean;
6
+ }
7
+ interface PendingLeave {
8
+ leave: Leave;
9
+ }
10
+ /** Wiring `<DiscardGuard>` reads; not part of the consumer contract. */
11
+ interface DiscardGuardInternals {
12
+ pending: PendingLeave | null;
13
+ /** Bumped on confirm so the dialog unmounts in the same commit as the exit (see the file header). */
14
+ confirmKey: number;
15
+ confirm: () => void;
16
+ keepEditing: () => void;
17
+ report: (id: string, report: DirtyReport) => void;
18
+ unreport: (id: string) => void;
19
+ guardScope: (scope: string | null, leave: Leave) => void;
20
+ }
21
+ export interface DiscardGuardController {
22
+ /** True while any mounted form reports unsaved input. */
23
+ readonly isDirty: boolean;
24
+ /** Runs `leave` now, or after the operator confirms when a form is dirty. */
25
+ guard: (leave: Leave) => void;
26
+ /** Runs `leave` without asking — for exits that keep the input, like a successful save. */
27
+ bypass: (leave: Leave) => void;
28
+ /**
29
+ * Wraps a modal's `onOpenChange` so its close button, Escape and outside
30
+ * click go through `guard`. Opening passes straight through.
31
+ */
32
+ guardOpenChange: (onOpenChange: (open: boolean) => void) => (open: boolean) => void;
33
+ /** @internal Read by `<DiscardGuard>`. */
34
+ readonly internals: DiscardGuardInternals;
35
+ }
36
+ /** Creates the guard. Call it in the component that owns the modal. */
37
+ export declare function useDiscardGuard(): DiscardGuardController;
38
+ export {};
@@ -5,5 +5,5 @@
5
5
  * Ensures exclusive selection (preset OR custom).
6
6
  */
7
7
  export { DonationAmounts } from './DonationAmounts';
8
- export type { DonationAmount, SelectedDonation, DonationLabels, DonationAmountsProps } from './types';
8
+ export type { DonationAmount, SelectedDonation, DonationLabels, DonationAmountsProps, DonationAmountsVariant, } from './types';
9
9
  export { formatCurrency, parseCurrency } from './utils/currency';
@@ -0,0 +1,32 @@
1
+ import { DonationAmountsProps, DonationAmountsVariant } from './types';
2
+ type TiledVariant = Exclude<DonationAmountsVariant, 'pill'>;
3
+ type FieldSize = NonNullable<DonationAmountsProps['size']>;
4
+ interface VariantSlots {
5
+ root: string;
6
+ title: string;
7
+ eyebrow: string;
8
+ caption: string;
9
+ grid: string;
10
+ preset: string;
11
+ presetIdle: string;
12
+ presetSelected: string;
13
+ amount: string;
14
+ amountSelected: string;
15
+ sublabel: string;
16
+ customLabel: string;
17
+ inputBase: string;
18
+ inputWrapper: string;
19
+ inputWrapperActive: string;
20
+ input: string;
21
+ }
22
+ export declare const donationAmountsSlots: Record<TiledVariant, VariantSlots>;
23
+ /**
24
+ * What `size` changes in `tile` and `pos`: the custom field's height and text.
25
+ * `md` is the mockup's field (38px in `tile`, 40px in `pos`); `sm` and `lg`
26
+ * are HeroUI's 32px and 48px fields. The Add button takes `size` directly.
27
+ */
28
+ export declare const donationAmountsFieldSize: Record<TiledVariant, Record<FieldSize, {
29
+ wrapper: string;
30
+ input: string;
31
+ }>>;
32
+ export {};
@@ -18,7 +18,27 @@ export interface DonationAmount {
18
18
  * If not provided, the formatted currency will be used
19
19
  */
20
20
  label?: string;
21
+ /**
22
+ * Second line under the amount, e.g. `'+$0.56 donation'` on a round-up
23
+ * offer. Rendered by the `tile` and `pos` variants only; the `pill`
24
+ * variant has no room for it.
25
+ */
26
+ sublabel?: string;
21
27
  }
28
+ /**
29
+ * How the presets and the custom input are drawn.
30
+ *
31
+ * - `pill` (default): HeroUI bordered pill buttons; the selected one fills
32
+ * with the brand colour. The original look, unchanged.
33
+ * - `tile`: the Quick Donation / Quick Membership amount grid. Rectangular
34
+ * 12px tiles on the `pos-field` hairline; the selected tile takes a brand
35
+ * border, a 9% brand tint and brand digits.
36
+ * - `pos`: the register's donation modal and round-up offer. 14px chips on
37
+ * the `pos-line` hairline that auto-fit the row (min 96px), 19px digits
38
+ * that stay ink when selected over a 5% brand tint, an optional sublabel,
39
+ * and a visible label over the custom input.
40
+ */
41
+ export type DonationAmountsVariant = 'pill' | 'tile' | 'pos';
22
42
  /**
23
43
  * Selected donation value (can be preset or custom)
24
44
  */
@@ -57,6 +77,27 @@ export interface DonationLabels {
57
77
  * @default 'Add Donation'
58
78
  */
59
79
  addDonationButton?: string;
80
+ /**
81
+ * Small uppercase heading above the presets ("Round up your total").
82
+ * `tile` and `pos` variants only.
83
+ */
84
+ eyebrow?: string;
85
+ /**
86
+ * Muted line under the eyebrow or title ("Current total $19.44").
87
+ * `tile` and `pos` variants only.
88
+ */
89
+ caption?: string;
90
+ /**
91
+ * Visible label over the custom amount input ("Custom amount"). When set
92
+ * it also names the input, so `customAmountAriaLabel` is not needed.
93
+ * `tile` and `pos` variants only.
94
+ */
95
+ customAmountLabel?: string;
96
+ /**
97
+ * Accessible name of the preset group when no `title` is shown.
98
+ * @default 'Suggested amounts'
99
+ */
100
+ presetsAriaLabel?: string;
60
101
  }
61
102
  /**
62
103
  * Props for DonationAmounts component
@@ -145,10 +186,23 @@ export interface DonationAmountsProps {
145
186
  */
146
187
  inputVariant?: 'flat' | 'bordered' | 'faded' | 'underlined';
147
188
  /**
148
- * Size of the custom amount input and add button
189
+ * Size of the custom amount input and add button. In `tile` and `pos`,
190
+ * `md` is the mockup's field; the presets keep their size in every variant.
149
191
  * @default 'md'
150
192
  */
151
193
  size?: 'sm' | 'md' | 'lg';
194
+ /**
195
+ * Visual variant. See {@link DonationAmountsVariant}.
196
+ * @default 'pill'
197
+ */
198
+ variant?: DonationAmountsVariant;
199
+ /**
200
+ * Marks the title as required with a danger asterisk (`tile` and `pos`
201
+ * variants). The asterisk is decorative; announce the requirement through
202
+ * the form's own validation.
203
+ * @default false
204
+ */
205
+ isRequired?: boolean;
152
206
  /**
153
207
  * Additional CSS classes
154
208
  */
@@ -6,13 +6,17 @@
6
6
  * @param amount - The amount to format
7
7
  * @param locale - The locale to use for formatting (e.g., 'en-US', 'es-ES')
8
8
  * @param currency - The currency code (ISO 4217, e.g., 'USD', 'EUR')
9
+ * @param trimZeroCents - Drop the fraction of a whole amount ("$25" rather than
10
+ * "$25.00"). Default `true`; `false` keeps the currency's own digits, as a
11
+ * register price does.
9
12
  * @returns Formatted currency string
10
13
  *
11
14
  * @example
12
- * formatCurrency(1000, 'en-US', 'USD') // "$1,000.00"
13
- * formatCurrency(1000, 'es-ES', 'EUR') // "1.000,00 €"
15
+ * formatCurrency(1000, 'en-US', 'USD') // "$1,000"
16
+ * formatCurrency(1000.5, 'es-ES', 'EUR') // "1000,5 €"
17
+ * formatCurrency(5, 'en-US', 'USD', false) // "$5.00"
14
18
  */
15
- export declare function formatCurrency(amount: number, locale?: string, currency?: string): string;
19
+ export declare function formatCurrency(amount: number, locale?: string, currency?: string, trimZeroCents?: boolean): string;
16
20
  /**
17
21
  * Parses a currency string to a number
18
22
  * @param value - The currency string to parse
@@ -0,0 +1,9 @@
1
+ import { default as React } from 'react';
2
+ import { EntityListProps, EntityListSkeletonProps } from './types';
3
+ export declare const EntityList: React.FC<EntityListProps>;
4
+ /**
5
+ * The list in skeleton form, at the same row height so nothing shifts when the
6
+ * rows arrive. The placeholder rows are hidden from assistive tech; `label` is
7
+ * announced once through a `role="status"` region instead.
8
+ */
9
+ export declare const EntityListSkeleton: React.FC<EntityListSkeletonProps>;
@@ -0,0 +1,3 @@
1
+ import { default as React } from 'react';
2
+ import { EntityRowProps } from './types';
3
+ export declare const EntityRow: React.FC<EntityRowProps>;
@@ -0,0 +1,2 @@
1
+ /** True inside an `EntityList`, so rows default to `li`. */
2
+ export declare const EntityListContext: import('react').Context<boolean>;
@@ -0,0 +1,3 @@
1
+ /** Inline so the defaults render offline and without an icon registry. */
2
+ export declare const ChevronRightIcon: () => import("react/jsx-runtime").JSX.Element;
3
+ export declare const MenuDotsIcon: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,3 @@
1
+ export { EntityRow } from './EntityRow';
2
+ export { EntityList, EntityListSkeleton } from './EntityList';
3
+ export type { EntityRowProps, EntityRowSize, EntityRowVariant, EntityRowTag, EntityRowTagTone, EntityRowLeading, EntityRowAction, EntityListProps, EntityListSkeletonProps, } from './types';
@@ -0,0 +1,6 @@
1
+ /**
2
+ * "Chidi Okafor" → "CO", "Ana María de la Cruz" → "AC", "Cher" → "C".
3
+ * First and last word, so a long name does not spell an acronym the way
4
+ * HeroUI's default (every word's initial) does. Empty → "—".
5
+ */
6
+ export declare function initialsFromName(name: string): string;