@pantool/components 1.0.0-alpha.0

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 (207) hide show
  1. package/README.md +80 -0
  2. package/dist/atoms/alert-dialog/alert-dialog.d.ts +7 -0
  3. package/dist/atoms/alert-dialog/alert-dialog.js +2 -0
  4. package/dist/atoms/alert-dialog/alert-dialog.js.map +1 -0
  5. package/dist/atoms/alert-dialog/index.d.ts +1 -0
  6. package/dist/atoms/alert-dialog/index.js +1 -0
  7. package/dist/atoms/button/button.css +18 -0
  8. package/dist/atoms/button/button.d.ts +16 -0
  9. package/dist/atoms/button/button.js +2 -0
  10. package/dist/atoms/button/button.js.map +1 -0
  11. package/dist/atoms/button/button.module.js +2 -0
  12. package/dist/atoms/button/button.module.js.map +1 -0
  13. package/dist/atoms/button/index.d.ts +1 -0
  14. package/dist/atoms/button/index.js +1 -0
  15. package/dist/atoms/checkbox/checkbox.css +119 -0
  16. package/dist/atoms/checkbox/checkbox.d.ts +53 -0
  17. package/dist/atoms/checkbox/checkbox.js +2 -0
  18. package/dist/atoms/checkbox/checkbox.js.map +1 -0
  19. package/dist/atoms/checkbox/checkbox.module.js +2 -0
  20. package/dist/atoms/checkbox/checkbox.module.js.map +1 -0
  21. package/dist/atoms/checkbox/index.d.ts +1 -0
  22. package/dist/atoms/checkbox/index.js +1 -0
  23. package/dist/atoms/combobox/combobox.css +302 -0
  24. package/dist/atoms/combobox/combobox.d.ts +115 -0
  25. package/dist/atoms/combobox/combobox.js +2 -0
  26. package/dist/atoms/combobox/combobox.js.map +1 -0
  27. package/dist/atoms/combobox/combobox.module.js +2 -0
  28. package/dist/atoms/combobox/combobox.module.js.map +1 -0
  29. package/dist/atoms/combobox/components/chip.js +2 -0
  30. package/dist/atoms/combobox/components/chip.js.map +1 -0
  31. package/dist/atoms/combobox/components/item.d.ts +17 -0
  32. package/dist/atoms/combobox/components/item.js +2 -0
  33. package/dist/atoms/combobox/components/item.js.map +1 -0
  34. package/dist/atoms/combobox/index.d.ts +1 -0
  35. package/dist/atoms/combobox/index.js +1 -0
  36. package/dist/atoms/condition-guard/condition-guard.d.ts +32 -0
  37. package/dist/atoms/condition-guard/condition-guard.js +2 -0
  38. package/dist/atoms/condition-guard/condition-guard.js.map +1 -0
  39. package/dist/atoms/condition-guard/index.js +1 -0
  40. package/dist/atoms/context-menu/context-menu.css +75 -0
  41. package/dist/atoms/context-menu/context-menu.d.ts +41 -0
  42. package/dist/atoms/context-menu/context-menu.js +2 -0
  43. package/dist/atoms/context-menu/context-menu.js.map +1 -0
  44. package/dist/atoms/context-menu/context-menu.module.js +2 -0
  45. package/dist/atoms/context-menu/context-menu.module.js.map +1 -0
  46. package/dist/atoms/context-menu/index.js +1 -0
  47. package/dist/atoms/dialog/dialog.d.ts +7 -0
  48. package/dist/atoms/dialog/dialog.js +2 -0
  49. package/dist/atoms/dialog/dialog.js.map +1 -0
  50. package/dist/atoms/dialog/index.d.ts +1 -0
  51. package/dist/atoms/dialog/index.js +1 -0
  52. package/dist/atoms/icon/icon.d.ts +14 -0
  53. package/dist/atoms/icon/icon.js +2 -0
  54. package/dist/atoms/icon/icon.js.map +1 -0
  55. package/dist/atoms/icon/index.d.ts +1 -0
  56. package/dist/atoms/icon/index.js +1 -0
  57. package/dist/atoms/icon-button/icon-button.css +12 -0
  58. package/dist/atoms/icon-button/icon-button.d.ts +14 -0
  59. package/dist/atoms/icon-button/icon-button.js +2 -0
  60. package/dist/atoms/icon-button/icon-button.js.map +1 -0
  61. package/dist/atoms/icon-button/icon-button.module.js +2 -0
  62. package/dist/atoms/icon-button/icon-button.module.js.map +1 -0
  63. package/dist/atoms/icon-button/index.d.ts +1 -0
  64. package/dist/atoms/icon-button/index.js +1 -0
  65. package/dist/atoms/index.d.ts +17 -0
  66. package/dist/atoms/index.js +1 -0
  67. package/dist/atoms/input/index.d.ts +1 -0
  68. package/dist/atoms/input/index.js +1 -0
  69. package/dist/atoms/input/input.css +29 -0
  70. package/dist/atoms/input/input.d.ts +39 -0
  71. package/dist/atoms/input/input.js +2 -0
  72. package/dist/atoms/input/input.js.map +1 -0
  73. package/dist/atoms/input/input.module.js +2 -0
  74. package/dist/atoms/input/input.module.js.map +1 -0
  75. package/dist/atoms/radio/index.d.ts +1 -0
  76. package/dist/atoms/radio/index.js +1 -0
  77. package/dist/atoms/radio/radio.css +142 -0
  78. package/dist/atoms/radio/radio.d.ts +40 -0
  79. package/dist/atoms/radio/radio.js +2 -0
  80. package/dist/atoms/radio/radio.js.map +1 -0
  81. package/dist/atoms/radio/radio.module.js +2 -0
  82. package/dist/atoms/radio/radio.module.js.map +1 -0
  83. package/dist/atoms/switch/index.d.ts +1 -0
  84. package/dist/atoms/switch/index.js +1 -0
  85. package/dist/atoms/switch/switch.css +68 -0
  86. package/dist/atoms/switch/switch.d.ts +19 -0
  87. package/dist/atoms/switch/switch.js +2 -0
  88. package/dist/atoms/switch/switch.js.map +1 -0
  89. package/dist/atoms/switch/switch.module.js +2 -0
  90. package/dist/atoms/switch/switch.module.js.map +1 -0
  91. package/dist/atoms/tabs/index.d.ts +3 -0
  92. package/dist/atoms/tabs/index.js +1 -0
  93. package/dist/atoms/tabs/tabs.css +92 -0
  94. package/dist/atoms/tabs/tabs.d.ts +43 -0
  95. package/dist/atoms/tabs/tabs.js +2 -0
  96. package/dist/atoms/tabs/tabs.js.map +1 -0
  97. package/dist/atoms/tabs/tabs.module.js +2 -0
  98. package/dist/atoms/tabs/tabs.module.js.map +1 -0
  99. package/dist/atoms/text/index.d.ts +1 -0
  100. package/dist/atoms/text/index.js +1 -0
  101. package/dist/atoms/text/text.css +273 -0
  102. package/dist/atoms/text/text.d.ts +18 -0
  103. package/dist/atoms/text/text.js +2 -0
  104. package/dist/atoms/text/text.js.map +1 -0
  105. package/dist/atoms/text/text.module.js +2 -0
  106. package/dist/atoms/text/text.module.js.map +1 -0
  107. package/dist/atoms/toast/index.d.ts +1 -0
  108. package/dist/atoms/toast/index.js +1 -0
  109. package/dist/atoms/toast/toast.css +151 -0
  110. package/dist/atoms/toast/toast.d.ts +11 -0
  111. package/dist/atoms/toast/toast.js +2 -0
  112. package/dist/atoms/toast/toast.js.map +1 -0
  113. package/dist/atoms/toast/toast.module.js +2 -0
  114. package/dist/atoms/toast/toast.module.js.map +1 -0
  115. package/dist/atoms/tooltip/index.d.ts +1 -0
  116. package/dist/atoms/tooltip/index.js +1 -0
  117. package/dist/atoms/tooltip/tooltip.css +92 -0
  118. package/dist/atoms/tooltip/tooltip.d.ts +50 -0
  119. package/dist/atoms/tooltip/tooltip.js +2 -0
  120. package/dist/atoms/tooltip/tooltip.js.map +1 -0
  121. package/dist/atoms/tooltip/tooltip.module.js +2 -0
  122. package/dist/atoms/tooltip/tooltip.module.js.map +1 -0
  123. package/dist/helpers/portal/context/hooks.d.ts +7 -0
  124. package/dist/helpers/portal/context/hooks.js +2 -0
  125. package/dist/helpers/portal/context/hooks.js.map +1 -0
  126. package/dist/helpers/portal/context/index.internal.d.ts +2 -0
  127. package/dist/helpers/portal/context/index.internal.js +1 -0
  128. package/dist/helpers/portal/context/portal-config.d.ts +12 -0
  129. package/dist/helpers/portal/context/portal-config.js +2 -0
  130. package/dist/helpers/portal/context/portal-config.js.map +1 -0
  131. package/dist/helpers/portal/context/provider.d.ts +11 -0
  132. package/dist/helpers/portal/context/provider.js +2 -0
  133. package/dist/helpers/portal/context/provider.js.map +1 -0
  134. package/dist/helpers/portal/index.d.ts +3 -0
  135. package/dist/helpers/portal/index.js +1 -0
  136. package/dist/helpers/portal/portal.d.ts +24 -0
  137. package/dist/helpers/portal/portal.js +2 -0
  138. package/dist/helpers/portal/portal.js.map +1 -0
  139. package/dist/index.d.ts +27 -0
  140. package/dist/index.js +1 -0
  141. package/dist/internals/base-button/base-button.css +262 -0
  142. package/dist/internals/base-button/base-button.d.ts +19 -0
  143. package/dist/internals/base-button/base-button.js +2 -0
  144. package/dist/internals/base-button/base-button.js.map +1 -0
  145. package/dist/internals/base-button/base-button.module.js +2 -0
  146. package/dist/internals/base-button/base-button.module.js.map +1 -0
  147. package/dist/internals/base-button/index.d.ts +1 -0
  148. package/dist/internals/base-button/index.js +1 -0
  149. package/dist/internals/base-dialog/base-dialog.css +74 -0
  150. package/dist/internals/base-dialog/base-dialog.d.ts +40 -0
  151. package/dist/internals/base-dialog/base-dialog.js +2 -0
  152. package/dist/internals/base-dialog/base-dialog.js.map +1 -0
  153. package/dist/internals/base-dialog/base-dialog.module.js +2 -0
  154. package/dist/internals/base-dialog/base-dialog.module.js.map +1 -0
  155. package/dist/internals/base-dialog/index.d.ts +1 -0
  156. package/dist/internals/base-dialog/index.js +1 -0
  157. package/dist/internals/base-field/base-field.css +115 -0
  158. package/dist/internals/base-field/base-field.d.ts +75 -0
  159. package/dist/internals/base-field/base-field.js +2 -0
  160. package/dist/internals/base-field/base-field.js.map +1 -0
  161. package/dist/internals/base-field/base-field.module.js +2 -0
  162. package/dist/internals/base-field/base-field.module.js.map +1 -0
  163. package/dist/internals/base-field/components/description.js +2 -0
  164. package/dist/internals/base-field/components/description.js.map +1 -0
  165. package/dist/internals/base-field/components/error.js +2 -0
  166. package/dist/internals/base-field/components/error.js.map +1 -0
  167. package/dist/internals/base-field/components/label.js +2 -0
  168. package/dist/internals/base-field/components/label.js.map +1 -0
  169. package/dist/internals/base-field/index.d.ts +1 -0
  170. package/dist/internals/base-field/index.js +1 -0
  171. package/dist/internals/base-svg/base-svg.css +137 -0
  172. package/dist/internals/base-svg/base-svg.d.ts +29 -0
  173. package/dist/internals/base-svg/base-svg.js +2 -0
  174. package/dist/internals/base-svg/base-svg.js.map +1 -0
  175. package/dist/internals/base-svg/base-svg.module.js +2 -0
  176. package/dist/internals/base-svg/base-svg.module.js.map +1 -0
  177. package/dist/internals/base-svg/index.d.ts +1 -0
  178. package/dist/internals/base-svg/index.js +1 -0
  179. package/dist/providers/alert-dialog-provider/alert-dialog-provider.d.ts +43 -0
  180. package/dist/providers/alert-dialog-provider/alert-dialog-provider.js +2 -0
  181. package/dist/providers/alert-dialog-provider/alert-dialog-provider.js.map +1 -0
  182. package/dist/providers/alert-dialog-provider/hooks.d.ts +16 -0
  183. package/dist/providers/alert-dialog-provider/hooks.js +2 -0
  184. package/dist/providers/alert-dialog-provider/hooks.js.map +1 -0
  185. package/dist/providers/alert-dialog-provider/index.d.ts +2 -0
  186. package/dist/providers/alert-dialog-provider/index.js +1 -0
  187. package/dist/providers/dialog-provider/dialog-provider.d.ts +43 -0
  188. package/dist/providers/dialog-provider/dialog-provider.js +2 -0
  189. package/dist/providers/dialog-provider/dialog-provider.js.map +1 -0
  190. package/dist/providers/dialog-provider/hooks.d.ts +16 -0
  191. package/dist/providers/dialog-provider/hooks.js +2 -0
  192. package/dist/providers/dialog-provider/hooks.js.map +1 -0
  193. package/dist/providers/dialog-provider/index.d.ts +2 -0
  194. package/dist/providers/dialog-provider/index.js +1 -0
  195. package/dist/providers/index.d.ts +8 -0
  196. package/dist/providers/index.js +1 -0
  197. package/dist/providers/toast-provider/index.d.ts +1 -0
  198. package/dist/providers/toast-provider/index.js +1 -0
  199. package/dist/providers/toast-provider/toast-provider.css +13 -0
  200. package/dist/providers/toast-provider/toast-provider.d.ts +124 -0
  201. package/dist/providers/toast-provider/toast-provider.js +2 -0
  202. package/dist/providers/toast-provider/toast-provider.js.map +1 -0
  203. package/dist/providers/toast-provider/toast-provider.module.js +2 -0
  204. package/dist/providers/toast-provider/toast-provider.module.js.map +1 -0
  205. package/dist/types.d.ts +43 -0
  206. package/dist/types.js +1 -0
  207. package/package.json +77 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-dialog.js","names":["styles"],"sources":["../../../src/internals/base-dialog/base-dialog.tsx"],"sourcesContent":["import { AlertDialog as BaseUIAlertDialog } from \"@base-ui/react/alert-dialog\";\nimport { Dialog as BaseUIDialog } from \"@base-ui/react/dialog\";\nimport clsx from \"clsx\";\nimport { useCallback } from \"react\";\nimport { Button } from \"../../atoms/button\";\nimport { Text } from \"../../atoms/text\";\nimport { usePortalConfig } from \"../../helpers/portal\";\nimport styles from \"./base-dialog.module.css\";\n\nexport type BaseDialogVariant =\n | \"neutral\"\n | \"positive\"\n | \"negative\"\n | \"warn\"\n | \"info\";\n\nexport type BaseDialogOptions = {\n /** The dialog heading text. */\n title: string;\n /** Optional body text shown below the title. */\n description?: string;\n /** Label for the confirm button. Defaults to `\"Confirm\"`. */\n confirmLabel?: string;\n /** Label for the cancel button. Defaults to `\"Cancel\"`. */\n cancelLabel?: string;\n /** Visual variant controlling color and tone. Defaults to `\"neutral\"`. */\n variant?: BaseDialogVariant;\n /** Called when the user clicks the confirm button. */\n onConfirm?: () => void;\n /** Called when the user clicks the cancel button or dismisses the dialog. */\n onCancel?: () => void;\n};\n\nexport type BaseDialogClassNames = {\n backdrop?: string;\n popup?: string;\n actions?: string;\n};\n\nexport type BaseDialogProps = BaseDialogOptions & {\n /** Whether the dialog is open. */\n open: boolean;\n /** Called when the dialog requests to close (backdrop click, Escape key). */\n onOpenChange: (open: boolean) => void;\n /**\n * The DOM element to portal the dialog into.\n * Defaults to `document.body` when not provided.\n */\n container?: HTMLElement | null;\n /**\n * Render Mode\n */\n as: typeof BaseUIAlertDialog | typeof BaseUIDialog;\n\n /**\n * Optional className overrides for internal slots.\n * Keys correspond to existing CSS module classes in `styles[\"...\"]`.\n */\n classNames?: BaseDialogClassNames;\n};\n\nexport const BaseDialog = (props: BaseDialogProps) => {\n const {\n open,\n onOpenChange,\n title,\n description,\n confirmLabel = \"Confirm\",\n cancelLabel = \"Cancel\",\n variant = \"neutral\",\n onConfirm,\n as,\n onCancel,\n classNames,\n } = props;\n\n const handleConfirm = useCallback(() => {\n onConfirm?.();\n onOpenChange(false);\n }, [onConfirm, onOpenChange]);\n\n const handleCancel = useCallback(() => {\n onCancel?.();\n onOpenChange(false);\n }, [onCancel, onOpenChange]);\n\n const { resolveContainer } = usePortalConfig();\n const portalContainer = resolveContainer();\n\n const DialogComponent = as;\n\n return (\n <DialogComponent.Root\n open={open}\n onOpenChange={onOpenChange}\n >\n <DialogComponent.Portal container={portalContainer}>\n <DialogComponent.Backdrop\n data-slot=\"base-dialog-backdrop\"\n className={clsx(styles[\"backdrop\"], classNames?.backdrop)}\n />\n <DialogComponent.Popup\n data-variant={variant}\n data-slot=\"base-dialog-popup\"\n className={clsx(styles[\"popup\"], classNames?.popup)}\n >\n <DialogComponent.Title render={<Text variant=\"h5\">{title}</Text>} />\n\n {description && (\n <DialogComponent.Description\n render={<Text variant=\"body1\">{description}</Text>}\n />\n )}\n\n <div\n data-slot=\"base-dialog-actions\"\n className={clsx(styles[\"actions\"], classNames?.actions)}\n >\n <DialogComponent.Close\n render={\n <Button\n variant=\"ghost\"\n color=\"neutral\"\n text={cancelLabel}\n />\n }\n onClick={handleCancel}\n />\n <DialogComponent.Close\n render={\n <Button\n variant=\"filled\"\n color={variant}\n text={confirmLabel}\n />\n }\n onClick={handleConfirm}\n />\n </div>\n </DialogComponent.Popup>\n </DialogComponent.Portal>\n </DialogComponent.Root>\n );\n};\n"],"mappings":"6eA6DA,MAAa,EAAc,GAA2B,CACpD,GAAM,CACJ,OACA,eACA,QACA,cACA,eAAe,UACf,cAAc,SACd,UAAU,UACV,YACA,KACA,WACA,cACE,EAEE,EAAgB,MAAkB,CACtC,IAAY,EACZ,EAAa,EAAK,CACpB,EAAG,CAAC,EAAW,CAAY,CAAC,EAEtB,EAAe,MAAkB,CACrC,IAAW,EACX,EAAa,EAAK,CACpB,EAAG,CAAC,EAAU,CAAY,CAAC,EAErB,CAAE,oBAAqB,EAAgB,EACvC,EAAkB,EAAiB,EAEnC,EAAkB,EAExB,OACE,EAAC,EAAgB,KAAjB,CACQ,OACQ,wBAEd,EAAC,EAAgB,OAAjB,CAAwB,UAAW,WAAnC,CACE,EAAC,EAAgB,SAAjB,CACE,YAAU,uBACV,UAAW,EAAKA,EAAO,SAAa,GAAY,QAAQ,CACzD,CAAA,EACD,EAAC,EAAgB,MAAjB,CACE,eAAc,EACd,YAAU,oBACV,UAAW,EAAKA,EAAO,MAAU,GAAY,KAAK,WAHpD,CAKE,EAAC,EAAgB,MAAjB,CAAuB,OAAQ,EAAC,EAAD,CAAM,QAAQ,cAAM,CAAY,CAAA,CAAI,CAAA,EAElE,GACC,EAAC,EAAgB,YAAjB,CACE,OAAQ,EAAC,EAAD,CAAM,QAAQ,iBAAS,CAAkB,CAAA,CAClD,CAAA,EAGH,EAAC,MAAD,CACE,YAAU,sBACV,UAAW,EAAKA,EAAO,QAAY,GAAY,OAAO,WAFxD,CAIE,EAAC,EAAgB,MAAjB,CACE,OACE,EAAC,EAAD,CACE,QAAQ,QACR,MAAM,UACN,KAAM,CACP,CAAA,EAEH,QAAS,CACV,CAAA,EACD,EAAC,EAAgB,MAAjB,CACE,OACE,EAAC,EAAD,CACE,QAAQ,SACR,MAAO,EACP,KAAM,CACP,CAAA,EAEH,QAAS,CACV,CAAA,CACE,GACgB,GACD,GACJ,CAAA,CAE1B"}
@@ -0,0 +1,2 @@
1
+ var e={actions:`_9nsqjG_actions`,backdrop:`_9nsqjG_backdrop`,popup:`_9nsqjG_popup`};export{e as default};
2
+ //# sourceMappingURL=base-dialog.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-dialog.module.js","names":[],"sources":["../../../src/internals/base-dialog/base-dialog.module.css"],"sourcesContent":[".backdrop {\n position: fixed;\n inset: 0;\n background-color: var(--color-surface-backdrop-overlay);\n backdrop-filter: blur(0.5rem);\n z-index: 1000;\n\n transition: opacity 0.2s ease;\n\n &[data-starting-style],\n &[data-ending-style] {\n opacity: 0;\n }\n}\n\n.popup {\n --background: var(--color-surface-base);\n --foreground: var(--color-content-neutral-base);\n --border: var(--color-border-primary);\n\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n z-index: 1010;\n\n box-sizing: border-box;\n width: calc(100vw - 2rem);\n max-width: 28rem;\n\n background-color: var(--background);\n color: var(--foreground);\n border: 1px solid var(--border);\n border-radius: var(--spacing-sm);\n padding: var(--spacing-xl);\n\n display: flex;\n flex-direction: column;\n gap: var(--spacing-md);\n\n transition:\n opacity 0.2s cubic-bezier(0.22, 1, 0.36, 1),\n transform 0.2s cubic-bezier(0.22, 1, 0.36, 1);\n\n &[data-starting-style],\n &[data-ending-style] {\n opacity: 0;\n transform: translate(-50%, -46%);\n }\n\n &:focus-visible {\n outline-style: solid;\n outline-width: var(--stroke-focus-ring);\n outline-color: var(--color-action-info-base);\n outline-offset: var(--spacing-xxs);\n }\n\n &[data-variant=\"neutral\"] {\n --border: var(--color-action-neutral-muted);\n }\n &[data-variant=\"positive\"] {\n --border: var(--color-action-positive-muted);\n }\n &[data-variant=\"negative\"] {\n --border: var(--color-action-negative-muted);\n }\n &[data-variant=\"warn\"] {\n --border: var(--color-action-warn-muted);\n }\n &[data-variant=\"info\"] {\n --border: var(--color-action-info-muted);\n }\n}\n\n.actions {\n display: flex;\n justify-content: flex-end;\n gap: var(--spacing-sm);\n margin-top: var(--spacing-xs);\n}\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ import { BaseDialogClassNames, BaseDialogOptions, BaseDialogProps, BaseDialogVariant } from "./base-dialog.js";
@@ -0,0 +1 @@
1
+ import"./base-dialog.js";
@@ -0,0 +1,115 @@
1
+ ._usQlq_root {
2
+ align-items: start;
3
+ gap: var(--field-gap);
4
+ font-family: var(--typography-typeface-ltr);
5
+ --field-required-color: var(--color-content-negative-base);
6
+ --field-control-radius: 0;
7
+ --field-control-bg-color: var(--color-surface-base);
8
+ --field-control-text-color: var(--color-content-neutral-base);
9
+ --field-label-color: var(--color-content-neutral-secondary);
10
+ --field-control-border-color: var(--color-border-secondary);
11
+ --field-control-placeholder-color: var(--color-content-neutral-muted);
12
+ flex-direction: column;
13
+ width: 100%;
14
+ display: flex;
15
+ }
16
+
17
+ ._usQlq_root[data-size="sm"] {
18
+ --field-gap: var(--spacing-sm);
19
+ --field-label-font-size: var(--typography-caption-base-size);
20
+ --field-label-line-height: var(--typography-caption-base-height);
21
+ --field-label-font-weight: var(--typography-caption-base-weight);
22
+ --helper-font-size: var(--typography-caption-base-size);
23
+ --helper-line-height: var(--typography-caption-base-height);
24
+ --field-control-height: 2rem;
25
+ --field-control-icon-size: 1.5rem;
26
+ --field-control-font-size: var(--typography-caption-base-size);
27
+ --field-control-line-height: var(--typography-caption-base-height);
28
+ --field-control-font-weight: var(--typography-caption-base-weight);
29
+ }
30
+
31
+ ._usQlq_root[data-size="md"] {
32
+ --field-gap: var(--spacing-md);
33
+ --field-label-font-size: var(--typography-body-2-size);
34
+ --field-label-line-height: var(--typography-body-2-height);
35
+ --field-label-font-weight: var(--typography-body-2-weight);
36
+ --helper-font-size: var(--typography-caption-base-size);
37
+ --helper-line-height: var(--typography-caption-base-height);
38
+ --field-control-height: 2.5rem;
39
+ --field-control-icon-size: 2rem;
40
+ --field-control-font-size: var(--typography-body-2-size);
41
+ --field-control-line-height: var(--typography-body-2-height);
42
+ --field-control-font-weight: var(--typography-body-2-weight);
43
+ }
44
+
45
+ ._usQlq_root[data-size="lg"] {
46
+ --field-gap: var(--spacing-md);
47
+ --field-label-font-size: var(--typography-body-1-size);
48
+ --field-label-line-height: var(--typography-body-1-height);
49
+ --field-label-font-weight: var(--typography-body-1-weight);
50
+ --helper-font-size: var(--typography-body-2-size);
51
+ --helper-line-height: var(--typography-body-2-height);
52
+ --field-control-height: 3rem;
53
+ --field-control-icon-size: 2rem;
54
+ --field-control-font-size: var(--typography-body-1-size);
55
+ --field-control-line-height: var(--typography-body-1-height);
56
+ --field-control-font-weight: var(--typography-body-1-weight);
57
+ }
58
+
59
+ ._usQlq_root[data-invalid] {
60
+ --field-control-text-color: var(--color-content-neutral-muted);
61
+ --field-label-color: var(--color-content-negative-muted);
62
+ --field-control-border-color: var(--color-content-negative-muted);
63
+ --field-required-color: var(--color-content-negative-muted);
64
+ }
65
+
66
+ ._usQlq_label {
67
+ font-size: var(--field-label-font-size, var(--typography-body-2-size));
68
+ line-height: var(--field-label-line-height, var(--typography-body-2-height));
69
+ font-weight: var(--field-label-font-weight, var(--typography-body-2-weight));
70
+ color: var(--field-label-color);
71
+ }
72
+
73
+ ._usQlq_root[data-disabled] {
74
+ --field-control-bg-color: var(--color-surface-tertiary);
75
+ --field-control-text-color: var(--color-content-neutral-muted);
76
+ --field-label-color: var(--color-content-neutral-muted);
77
+ --field-control-border-color: var(--color-border-secondary);
78
+ --field-required-color: var(--color-content-neutral-muted);
79
+ cursor: not-allowed;
80
+ user-select: none;
81
+ }
82
+
83
+ ._usQlq_required {
84
+ color: var(--field-required-color);
85
+ margin-left: var(--spacing-xxs);
86
+ }
87
+
88
+ ._usQlq_visually-hidden {
89
+ clip: rect(0, 0, 0, 0);
90
+ white-space: nowrap;
91
+ border: 0;
92
+ width: 1px;
93
+ height: 1px;
94
+ margin: -1px;
95
+ padding: 0;
96
+ position: absolute;
97
+ overflow: hidden;
98
+ }
99
+
100
+ ._usQlq_error {
101
+ font-size: var(--helper-font-size);
102
+ line-height: var(--helper-line-height);
103
+ color: var(--color-content-negative-base);
104
+ }
105
+
106
+ ._usQlq_description {
107
+ font-size: var(--helper-font-size);
108
+ line-height: var(--helper-line-height);
109
+ color: var(--color-content-neutral-secondary);
110
+ margin: 0;
111
+ }
112
+
113
+ ._usQlq_description[data-disabled] {
114
+ color: var(--color-content-neutral-muted);
115
+ }
@@ -0,0 +1,75 @@
1
+ import { FieldRootProps } from "@base-ui/react/field";
2
+
3
+ //#region src/internals/base-field/base-field.d.ts
4
+ type FieldProps = Omit<FieldRootProps, "className"> & {
5
+ /**
6
+ * The label of the field.
7
+ */
8
+ label: string;
9
+ /**
10
+ * Whether to hide the label or not.
11
+ *
12
+ * @default false
13
+ */
14
+ hideLabel?: boolean;
15
+ /**
16
+ * Indicates whether or not the field is required.
17
+ *
18
+ * @default false
19
+ */
20
+ required?: boolean;
21
+ /**
22
+ * The text to display as a description.
23
+ */
24
+ description?: string;
25
+ /**
26
+ * Gets or sets whether or not the field is in a visually invalid state.
27
+ *
28
+ * This error state overrides the error state controlled by
29
+ * `reportValidity()`.
30
+ *
31
+ * @default false
32
+ */
33
+ invalid?: boolean;
34
+ /**
35
+ * The error message that replaces feedback when `error` is true. If
36
+ * `errorText` is an empty string, then the feedback will continue to
37
+ * show.
38
+ */
39
+ errorText?: string;
40
+ /**
41
+ * Whether the field's value has been changed from its initial value.
42
+ * Useful when the field state is controlled by an external library.
43
+ */
44
+ dirty?: boolean | undefined;
45
+ /**
46
+ * The size of the field.
47
+ *
48
+ * @default "md"
49
+ */
50
+ size?: "sm" | "md" | "lg";
51
+ /**
52
+ * Whether or not the element is disabled.
53
+ *
54
+ * @default false
55
+ */
56
+ disabled?: boolean;
57
+ /**
58
+ * Indicates that the element should be focused on mount.
59
+ *
60
+ * @default false
61
+ */
62
+ autoFocus?: boolean;
63
+ /**
64
+ * Additional CSS classes for styling.
65
+ */
66
+ classNames?: {
67
+ root?: string;
68
+ label?: string;
69
+ description?: string;
70
+ error?: string;
71
+ };
72
+ };
73
+ //#endregion
74
+ export { FieldProps };
75
+ //# sourceMappingURL=base-field.d.ts.map
@@ -0,0 +1,2 @@
1
+ import e from"./base-field.module.js";import{Label as t}from"./components/label.js";import{Description as n}from"./components/description.js";import{Error as r}from"./components/error.js";import i from"clsx";import{jsx as a,jsxs as o}from"react/jsx-runtime";import{Field as s}from"@base-ui/react/field";function c({label:c,hideLabel:l=!1,size:u=`md`,required:d=!1,disabled:f=!1,errorText:p,description:m,children:h,classNames:g,..._}){return o(s.Root,{className:i(e.root,g?.root),"data-slot":`field-root`,"data-size":u,"data-required":d,disabled:f,..._,children:[a(t,{className:g?.label,text:c,hidden:l,required:d,size:u}),a(n,{className:g?.description,text:m}),h,a(r,{className:g?.error,text:p})]})}export{c as Field};
2
+ //# sourceMappingURL=base-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-field.js","names":["Field","BaseField","styles"],"sources":["../../../src/internals/base-field/base-field.tsx"],"sourcesContent":["import { Field as BaseField, type FieldRootProps } from \"@base-ui/react/field\";\nimport clsx from \"clsx\";\nimport styles from \"./base-field.module.css\";\nimport { Label } from \"./components/label\";\nimport { Description } from \"./components/description\";\nimport { Error } from \"./components/error\";\n\nexport type FieldProps = Omit<FieldRootProps, \"className\"> & {\n /**\n * The label of the field.\n */\n label: string;\n\n /**\n * Whether to hide the label or not.\n *\n * @default false\n */\n hideLabel?: boolean;\n\n /**\n * Indicates whether or not the field is required.\n *\n * @default false\n */\n required?: boolean;\n\n /**\n * The text to display as a description.\n */\n description?: string;\n /**\n * Gets or sets whether or not the field is in a visually invalid state.\n *\n * This error state overrides the error state controlled by\n * `reportValidity()`.\n *\n * @default false\n */\n invalid?: boolean;\n\n /**\n * The error message that replaces feedback when `error` is true. If\n * `errorText` is an empty string, then the feedback will continue to\n * show.\n */\n errorText?: string;\n\n /**\n * Whether the field's value has been changed from its initial value.\n * Useful when the field state is controlled by an external library.\n */\n dirty?: boolean | undefined;\n\n /**\n * The size of the field.\n *\n * @default \"md\"\n */\n size?: \"sm\" | \"md\" | \"lg\";\n\n /**\n * Whether or not the element is disabled.\n *\n * @default false\n */\n disabled?: boolean;\n\n /**\n * Indicates that the element should be focused on mount.\n *\n * @default false\n */\n autoFocus?: boolean;\n /**\n * Additional CSS classes for styling.\n */\n classNames?: {\n root?: string;\n label?: string;\n description?: string;\n error?: string;\n };\n};\n\n/**\n * A field component that provides labeling and validation for form controls.\n * Built on top of Base UI's Field component with proper theming and sizing.\n */\nexport function Field({\n label,\n hideLabel = false,\n size = \"md\",\n required = false,\n disabled = false,\n errorText,\n description,\n children,\n classNames,\n ...props\n}: FieldProps) {\n return (\n <BaseField.Root\n className={clsx(styles[\"root\"], classNames?.root)}\n data-slot=\"field-root\"\n data-size={size}\n data-required={required}\n disabled={disabled}\n {...props}\n >\n <Label\n className={classNames?.label}\n text={label}\n hidden={hideLabel}\n required={required}\n size={size}\n />\n <Description className={classNames?.description} text={description} />\n {children}\n <Error className={classNames?.error} text={errorText} />\n </BaseField.Root>\n );\n}\n"],"mappings":"+SAyFA,SAAgBA,EAAM,CACpB,QACA,YAAY,GACZ,OAAO,KACP,WAAW,GACX,WAAW,GACX,YACA,cACA,WACA,aACA,GAAG,GACU,CACb,OACE,EAACC,EAAU,KAAX,CACE,UAAW,EAAKC,EAAO,KAAS,GAAY,IAAI,EAChD,YAAU,aACV,YAAW,EACX,gBAAe,EACL,WACV,GAAI,WANN,CAQE,EAAC,EAAD,CACE,UAAW,GAAY,MACvB,KAAM,EACN,OAAQ,EACE,WACJ,MACP,CAAA,EACD,EAAC,EAAD,CAAa,UAAW,GAAY,YAAa,KAAM,CAAc,CAAA,EACpE,EACD,EAAC,EAAD,CAAO,UAAW,GAAY,MAAO,KAAM,CAAY,CAAA,CACzC,GAEpB"}
@@ -0,0 +1,2 @@
1
+ var e={description:`_usQlq_description`,error:`_usQlq_error`,label:`_usQlq_label`,required:`_usQlq_required`,root:`_usQlq_root`,"visually-hidden":`_usQlq_visually-hidden`};export{e as default};
2
+ //# sourceMappingURL=base-field.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-field.module.js","names":[],"sources":["../../../src/internals/base-field/base-field.module.css"],"sourcesContent":[".root {\n display: flex;\n flex-direction: column;\n align-items: start;\n gap: var(--field-gap);\n font-family: var(--typography-typeface-ltr);\n width: 100%;\n --field-required-color: var(--color-content-negative-base);\n --field-control-radius: 0;\n --field-control-bg-color: var(--color-surface-base);\n --field-control-text-color: var(--color-content-neutral-base);\n --field-label-color: var(--color-content-neutral-secondary);\n --field-control-border-color: var(--color-border-secondary);\n --field-control-placeholder-color: var(--color-content-neutral-muted);\n}\n\n/* Size variants using data attributes */\n.root[data-size=\"sm\"] {\n --field-gap: var(--spacing-sm);\n --field-label-font-size: var(--typography-caption-base-size);\n --field-label-line-height: var(--typography-caption-base-height);\n --field-label-font-weight: var(--typography-caption-base-weight);\n --helper-font-size: var(--typography-caption-base-size);\n --helper-line-height: var(--typography-caption-base-height);\n --field-control-height: 2rem;\n --field-control-icon-size: 1.5rem;\n --field-control-font-size: var(--typography-caption-base-size);\n --field-control-line-height: var(--typography-caption-base-height);\n --field-control-font-weight: var(--typography-caption-base-weight);\n}\n\n.root[data-size=\"md\"] {\n --field-gap: var(--spacing-md);\n --field-label-font-size: var(--typography-body-2-size);\n --field-label-line-height: var(--typography-body-2-height);\n --field-label-font-weight: var(--typography-body-2-weight);\n --helper-font-size: var(--typography-caption-base-size);\n --helper-line-height: var(--typography-caption-base-height);\n --field-control-height: 2.5rem;\n --field-control-icon-size: 2rem;\n --field-control-font-size: var(--typography-body-2-size);\n --field-control-line-height: var(--typography-body-2-height);\n --field-control-font-weight: var(--typography-body-2-weight);\n}\n\n.root[data-size=\"lg\"] {\n --field-gap: var(--spacing-md);\n --field-label-font-size: var(--typography-body-1-size);\n --field-label-line-height: var(--typography-body-1-height);\n --field-label-font-weight: var(--typography-body-1-weight);\n --helper-font-size: var(--typography-body-2-size);\n --helper-line-height: var(--typography-body-2-height);\n --field-control-height: 3rem;\n --field-control-icon-size: 2rem;\n --field-control-font-size: var(--typography-body-1-size);\n --field-control-line-height: var(--typography-body-1-height);\n --field-control-font-weight: var(--typography-body-1-weight);\n}\n\n.root[data-invalid] {\n --field-control-text-color: var(--color-content-neutral-muted);\n --field-label-color: var(--color-content-negative-muted);\n --field-control-border-color: var(--color-content-negative-muted);\n --field-required-color: var(--color-content-negative-muted);\n}\n\n.label {\n font-size: var(--field-label-font-size, var(--typography-body-2-size));\n line-height: var(--field-label-line-height, var(--typography-body-2-height));\n font-weight: var(--field-label-font-weight, var(--typography-body-2-weight));\n color: var(--field-label-color);\n}\n\n.root[data-disabled] {\n --field-control-bg-color: var(--color-surface-tertiary);\n --field-control-text-color: var(--color-content-neutral-muted);\n --field-label-color: var(--color-content-neutral-muted);\n --field-control-border-color: var(--color-border-secondary);\n --field-required-color: var(--color-content-neutral-muted);\n cursor: not-allowed;\n user-select: none;\n}\n\n.required {\n color: var(--field-required-color);\n margin-left: var(--spacing-xxs);\n}\n\n.visually-hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n.error {\n font-size: var(--helper-font-size);\n line-height: var(--helper-line-height);\n color: var(--color-content-negative-base);\n}\n\n.description {\n font-size: var(--helper-font-size);\n line-height: var(--helper-line-height);\n color: var(--color-content-neutral-secondary);\n margin: 0;\n}\n\n.description[data-disabled] {\n color: var(--color-content-neutral-muted);\n}\n"],"mappings":"AAYA,IAAA,EAAU,CAAA,YAAA,qBAAA,MAAA,eAAA,MAAA,eAAA,SAAA,kBAAA,KAAA,cAAA,kBAAA,wBAAA"}
@@ -0,0 +1,2 @@
1
+ import e from"../base-field.module.js";import t from"clsx";import{Fragment as n,jsx as r}from"react/jsx-runtime";import{Field as i}from"@base-ui/react/field";function a({text:a,className:o}){return r(n,{children:a?r(i.Description,{"data-slot":`field-description`,className:t(e.description,o),children:a}):null})}export{a as Description};
2
+ //# sourceMappingURL=description.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"description.js","names":["BaseField","styles"],"sources":["../../../../src/internals/base-field/components/description.tsx"],"sourcesContent":["import { Field as BaseField } from \"@base-ui/react/field\";\nimport styles from \"../base-field.module.css\";\nimport clsx from \"clsx\";\n\nexport type DescriptionProps = {\n text?: string;\n className?: string;\n};\n\nexport function Description({ text, className }: DescriptionProps) {\n return (\n <>\n {text ? (\n <BaseField.Description\n data-slot=\"field-description\"\n className={clsx(styles[\"description\"], className)}\n >\n {text}\n </BaseField.Description>\n ) : null}\n </>\n );\n}\n"],"mappings":"8JASA,SAAgB,EAAY,CAAE,OAAM,aAA+B,CACjE,OACE,EAAA,EAAA,CAAA,SACG,EACC,EAACA,EAAU,YAAX,CACE,YAAU,oBACV,UAAW,EAAKC,EAAO,YAAgB,CAAS,WAE/C,CACoB,CAAA,EACrB,IACJ,CAAA,CAEN"}
@@ -0,0 +1,2 @@
1
+ import e from"../base-field.module.js";import t from"clsx";import{Fragment as n,jsx as r}from"react/jsx-runtime";import{Field as i}from"@base-ui/react/field";function a({text:a,className:o}){return r(n,{children:a&&r(i.Error,{className:t(e.error,o),match:`customError`,"data-slot":`field-error`,children:a})})}export{a as Error};
2
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","names":["BaseField","styles"],"sources":["../../../../src/internals/base-field/components/error.tsx"],"sourcesContent":["import { Field as BaseField } from \"@base-ui/react/field\";\nimport styles from \"../base-field.module.css\";\nimport clsx from \"clsx\";\n\nexport type ErrorProps = {\n text?: string;\n className?: string;\n};\n\nexport function Error({ text, className }: ErrorProps) {\n return (\n <>\n {text && (\n <BaseField.Error\n className={clsx(styles[\"error\"], className)}\n match=\"customError\"\n data-slot=\"field-error\"\n >\n {text}\n </BaseField.Error>\n )}\n </>\n );\n}\n"],"mappings":"8JASA,SAAgB,EAAM,CAAE,OAAM,aAAyB,CACrD,OACE,EAAA,EAAA,CAAA,SACG,GACC,EAACA,EAAU,MAAX,CACE,UAAW,EAAKC,EAAO,MAAU,CAAS,EAC1C,MAAM,cACN,YAAU,uBAET,CACc,CAAA,CAEnB,CAAA,CAEN"}
@@ -0,0 +1,2 @@
1
+ import e from"../base-field.module.js";import t from"clsx";import{jsx as n,jsxs as r}from"react/jsx-runtime";import{Field as i}from"@base-ui/react/field";function a({text:a,hidden:o=!1,size:s=`md`,required:c=!1,className:l}){return r(i.Label,{"data-size":s,"data-slot":`field-label`,className:t(e.label,l,{[e[`visually-hidden`]]:o}),children:[a,c&&n(`span`,{"aria-hidden":!0,title:`This field is required`,className:e.required,"data-slot":`field-required`,children:`*`})]})}export{a as Label};
2
+ //# sourceMappingURL=label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.js","names":["BaseField","styles"],"sources":["../../../../src/internals/base-field/components/label.tsx"],"sourcesContent":["import { Field as BaseField, type FieldLabelProps } from \"@base-ui/react/field\";\nimport clsx from \"clsx\";\nimport styles from \"../base-field.module.css\";\n\nexport type LabelProps = {\n text: string;\n hidden?: boolean;\n required?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n};\n\nexport function Label({\n text,\n hidden = false,\n size = \"md\",\n required = false,\n className,\n}: LabelProps) {\n return (\n <BaseField.Label\n data-size={size}\n data-slot=\"field-label\"\n className={clsx(styles[\"label\"], className, {\n [styles[\"visually-hidden\"]!]: hidden,\n })}\n >\n {text}\n {required && (\n <span\n aria-hidden\n title=\"This field is required\"\n className={styles[\"required\"]}\n data-slot=\"field-required\"\n >\n *\n </span>\n )}\n </BaseField.Label>\n );\n}\n"],"mappings":"0JAYA,SAAgB,EAAM,CACpB,OACA,SAAS,GACT,OAAO,KACP,WAAW,GACX,aACa,CACb,OACE,EAACA,EAAU,MAAX,CACE,YAAW,EACX,YAAU,cACV,UAAW,EAAKC,EAAO,MAAU,EAAW,EACzCA,EAAO,oBAAsB,CAChC,CAAC,WALH,CAOG,EACA,GACC,EAAC,OAAD,CACE,cAAA,GACA,MAAM,yBACN,UAAWA,EAAO,SAClB,YAAU,0BACX,GAEK,CAAA,CAEO,GAErB"}
@@ -0,0 +1 @@
1
+ import { FieldProps } from "./base-field.js";
@@ -0,0 +1 @@
1
+ import"./base-field.js";
@@ -0,0 +1,137 @@
1
+ .X10r3W_root {
2
+ user-select: none;
3
+ vertical-align: middle;
4
+ font-variant: normal;
5
+ text-transform: none;
6
+ width: var(--svg-size, 100%);
7
+ height: var(--svg-size, 100%);
8
+ min-width: var(--svg-size, 100%);
9
+ min-height: var(--svg-size, 100%);
10
+ fill: var(--svg-fill, currentColor);
11
+ font-style: normal;
12
+ font-weight: normal;
13
+ line-height: 1;
14
+ text-decoration: none;
15
+ transition: fill .2s ease-in-out;
16
+ display: inline-block;
17
+ }
18
+
19
+ .X10r3W_root[data-color="normal"] {
20
+ --svg-fill: var(--color-content-neutral-base);
21
+ }
22
+
23
+ .X10r3W_root[data-color="secondary"] {
24
+ --svg-fill: var(--color-content-neutral-secondary);
25
+ }
26
+
27
+ .X10r3W_root[data-color="tertiary"] {
28
+ --svg-fill: var(--color-content-neutral-tertiary);
29
+ }
30
+
31
+ .X10r3W_root[data-color="muted"] {
32
+ --svg-fill: var(--color-content-neutral-muted);
33
+ }
34
+
35
+ .X10r3W_root[data-color="brand"] {
36
+ --svg-fill: var(--color-content-brand-base);
37
+ }
38
+
39
+ .X10r3W_root[data-color="brand-secondary"] {
40
+ --svg-fill: var(--color-content-brand-secondary);
41
+ }
42
+
43
+ .X10r3W_root[data-color="brand-tertiary"] {
44
+ --svg-fill: var(--color-content-brand-tertiary);
45
+ }
46
+
47
+ .X10r3W_root[data-color="brand-muted"] {
48
+ --svg-fill: var(--color-content-brand-muted);
49
+ }
50
+
51
+ .X10r3W_root[data-color="positive"] {
52
+ --svg-fill: var(--color-content-positive-base);
53
+ }
54
+
55
+ .X10r3W_root[data-color="positive-secondary"] {
56
+ --svg-fill: var(--color-content-positive-secondary);
57
+ }
58
+
59
+ .X10r3W_root[data-color="positive-tertiary"] {
60
+ --svg-fill: var(--color-content-positive-tertiary);
61
+ }
62
+
63
+ .X10r3W_root[data-color="positive-muted"] {
64
+ --svg-fill: var(--color-content-positive-muted);
65
+ }
66
+
67
+ .X10r3W_root[data-color="negative"] {
68
+ --svg-fill: var(--color-content-negative-base);
69
+ }
70
+
71
+ .X10r3W_root[data-color="negative-secondary"] {
72
+ --svg-fill: var(--color-content-negative-secondary);
73
+ }
74
+
75
+ .X10r3W_root[data-color="negative-tertiary"] {
76
+ --svg-fill: var(--color-content-negative-tertiary);
77
+ }
78
+
79
+ .X10r3W_root[data-color="negative-muted"] {
80
+ --svg-fill: var(--color-content-negative-muted);
81
+ }
82
+
83
+ .X10r3W_root[data-color="warn"] {
84
+ --svg-fill: var(--color-content-warn-base);
85
+ }
86
+
87
+ .X10r3W_root[data-color="warn-secondary"] {
88
+ --svg-fill: var(--color-content-warn-secondary);
89
+ }
90
+
91
+ .X10r3W_root[data-color="warn-tertiary"] {
92
+ --svg-fill: var(--color-content-warn-tertiary);
93
+ }
94
+
95
+ .X10r3W_root[data-color="warn-muted"] {
96
+ --svg-fill: var(--color-content-warn-muted);
97
+ }
98
+
99
+ .X10r3W_root[data-color="info"] {
100
+ --svg-fill: var(--color-content-info-base);
101
+ }
102
+
103
+ .X10r3W_root[data-color="info-secondary"] {
104
+ --svg-fill: var(--color-content-info-secondary);
105
+ }
106
+
107
+ .X10r3W_root[data-color="info-tertiary"] {
108
+ --svg-fill: var(--color-content-info-tertiary);
109
+ }
110
+
111
+ .X10r3W_root[data-color="info-muted"] {
112
+ --svg-fill: var(--color-content-info-muted);
113
+ }
114
+
115
+ .X10r3W_root[data-color="on-neutral"] {
116
+ --svg-fill: var(--color-on-neutral);
117
+ }
118
+
119
+ .X10r3W_root[data-color="on-brand"] {
120
+ --svg-fill: var(--color-on-brand);
121
+ }
122
+
123
+ .X10r3W_root[data-color="on-positive"] {
124
+ --svg-fill: var(--color-on-positive);
125
+ }
126
+
127
+ .X10r3W_root[data-color="on-negative"] {
128
+ --svg-fill: var(--color-on-negative);
129
+ }
130
+
131
+ .X10r3W_root[data-color="on-warn"] {
132
+ --svg-fill: var(--color-on-warn);
133
+ }
134
+
135
+ .X10r3W_root[data-color="on-info"] {
136
+ --svg-fill: var(--color-on-info);
137
+ }
@@ -0,0 +1,29 @@
1
+ import * as React from "react";
2
+
3
+ //#region src/internals/base-svg/base-svg.d.ts
4
+ type SvgColor = "currentcolor" | "normal" | "secondary" | "tertiary" | "muted" | "brand" | "brand-secondary" | "brand-tertiary" | "brand-muted" | "positive" | "positive-secondary" | "positive-tertiary" | "positive-muted" | "negative" | "negative-secondary" | "negative-tertiary" | "negative-muted" | "warn" | "warn-secondary" | "warn-tertiary" | "warn-muted" | "info" | "info-secondary" | "info-tertiary" | "info-muted" | "on-neutral" | "on-brand" | "on-positive" | "on-negative" | "on-warn" | "on-info";
5
+ interface BaseSvgProps extends React.ComponentPropsWithoutRef<"svg"> {
6
+ /**
7
+ * The semantic color of the SVG. Maps to theme tokens.
8
+ * @default "currentcolor"
9
+ */
10
+ color?: SvgColor;
11
+ /**
12
+ * The viewBox of the SVG.
13
+ * @default "0 0 24 24"
14
+ */
15
+ viewBox?: string;
16
+ /**
17
+ * Provides a human-readable title for the element for accessibility.
18
+ */
19
+ title?: string;
20
+ /**
21
+ * The size of the icon in pixels (converted to rem internally).
22
+ * If set to `"auto"`, the icon inherits the parent's dimensions.
23
+ * @default "auto"
24
+ */
25
+ size?: number | "auto";
26
+ }
27
+ //#endregion
28
+ export { BaseSvgProps, SvgColor };
29
+ //# sourceMappingURL=base-svg.d.ts.map
@@ -0,0 +1,2 @@
1
+ import e from"./base-svg.module.js";import*as t from"react";import{jsx as n,jsxs as r}from"react/jsx-runtime";const i=t.forwardRef((t,i)=>{let{children:a,className:o,title:s,style:c,color:l=`currentcolor`,viewBox:u=`0 0 24 24`,size:d=`auto`,...f}=t;typeof d==`number`&&!isNaN(d)||typeof d==`string`&&d===`auto`||console.error(`Expected a valid size prop, received \`size={${d}}\`.`);let p={"--svg-size":d===`auto`?`100%`:`${d/16}rem`,...c};return r(`svg`,{...f,ref:i,xmlns:`http://www.w3.org/2000/svg`,viewBox:u,"aria-hidden":s?void 0:!0,role:s?`img`:void 0,focusable:`false`,style:p,className:`${e.root} ${o||``}`.trim(),"data-color":l,children:[s&&n(`title`,{children:s}),a]})});export{i as BaseSvg};
2
+ //# sourceMappingURL=base-svg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-svg.js","names":["styles"],"sources":["../../../src/internals/base-svg/base-svg.tsx"],"sourcesContent":["import * as React from \"react\";\nimport styles from \"./base-svg.module.css\";\n\nexport type SvgColor =\n | \"currentcolor\"\n | \"normal\"\n | \"secondary\"\n | \"tertiary\"\n | \"muted\"\n | \"brand\"\n | \"brand-secondary\"\n | \"brand-tertiary\"\n | \"brand-muted\"\n | \"positive\"\n | \"positive-secondary\"\n | \"positive-tertiary\"\n | \"positive-muted\"\n | \"negative\"\n | \"negative-secondary\"\n | \"negative-tertiary\"\n | \"negative-muted\"\n | \"warn\"\n | \"warn-secondary\"\n | \"warn-tertiary\"\n | \"warn-muted\"\n | \"info\"\n | \"info-secondary\"\n | \"info-tertiary\"\n | \"info-muted\"\n | \"on-neutral\"\n | \"on-brand\"\n | \"on-positive\"\n | \"on-negative\"\n | \"on-warn\"\n | \"on-info\";\n\nexport interface BaseSvgProps extends React.ComponentPropsWithoutRef<\"svg\"> {\n /**\n * The semantic color of the SVG. Maps to theme tokens.\n * @default \"currentcolor\"\n */\n color?: SvgColor;\n\n /**\n * The viewBox of the SVG.\n * @default \"0 0 24 24\"\n */\n viewBox?: string;\n\n /**\n * Provides a human-readable title for the element for accessibility.\n */\n title?: string;\n\n /**\n * The size of the icon in pixels (converted to rem internally).\n * If set to `\"auto\"`, the icon inherits the parent's dimensions.\n * @default \"auto\"\n */\n size?: number | \"auto\";\n}\n\nexport const BaseSvg = React.forwardRef<SVGSVGElement, BaseSvgProps>(\n (props, ref) => {\n const {\n children,\n className,\n title,\n style: otherStyles,\n color = \"currentcolor\",\n viewBox = \"0 0 24 24\",\n size = \"auto\",\n ...otherProps\n } = props;\n\n const hasValidSize =\n (typeof size === \"number\" && !isNaN(size)) ||\n (typeof size === \"string\" && size === \"auto\");\n\n if (!hasValidSize) {\n console.error(`Expected a valid size prop, received \\`size={${size}}\\`.`);\n }\n\n // Inject size as a local CSS variable to maintain zero-runtime CSS purity\n const sizeValue = size === \"auto\" ? \"100%\" : `${(size as number) / 16}rem`;\n const inlineStyles = {\n \"--svg-size\": sizeValue,\n ...otherStyles,\n } as React.CSSProperties;\n\n return (\n <svg\n {...otherProps}\n ref={ref}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox={viewBox}\n aria-hidden={title ? undefined : true}\n role={title ? \"img\" : undefined}\n focusable=\"false\"\n style={inlineStyles}\n className={`${styles[\"root\"]} ${className || \"\"}`.trim()}\n data-color={color}\n >\n {title && <title>{title}</title>}\n {children}\n </svg>\n );\n },\n);\n"],"mappings":"8GA8DA,MAAa,EAAU,EAAM,YAC1B,EAAO,IAAQ,CACd,GAAM,CACJ,WACA,YACA,QACA,MAAO,EACP,QAAQ,eACR,UAAU,YACV,OAAO,OACP,GAAG,GACD,EAGD,OAAO,GAAS,UAAY,CAAC,MAAM,CAAI,GACvC,OAAO,GAAS,UAAY,IAAS,QAGtC,QAAQ,MAAM,gDAAgD,EAAK,KAAK,EAK1E,IAAM,EAAe,CACnB,aAFgB,IAAS,OAAS,OAAS,GAAI,EAAkB,GAAG,KAGpE,GAAG,CACL,EAEA,OACE,EAAC,MAAD,CACE,GAAI,EACC,MACL,MAAM,6BACG,UACT,cAAa,EAAQ,IAAA,GAAY,GACjC,KAAM,EAAQ,MAAQ,IAAA,GACtB,UAAU,QACV,MAAO,EACP,UAAW,GAAGA,EAAO,KAAQ,GAAG,GAAa,KAAK,KAAK,EACvD,aAAY,WAVd,CAYG,GAAS,EAAC,QAAD,CAAA,SAAQ,CAAa,CAAA,EAC9B,CACE,GAET,CACF"}
@@ -0,0 +1,2 @@
1
+ var e={root:`X10r3W_root`};export{e as default};
2
+ //# sourceMappingURL=base-svg.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-svg.module.js","names":[],"sources":["../../../src/internals/base-svg/base-svg.module.css"],"sourcesContent":[".root {\n user-select: none;\n display: inline-block;\n vertical-align: middle;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n line-height: 1;\n text-decoration: none;\n\n /* Layout controlled by injected local variable from TSX */\n width: var(--svg-size, 100%);\n height: var(--svg-size, 100%);\n min-width: var(--svg-size, 100%);\n min-height: var(--svg-size, 100%);\n\n /* Default fill color */\n fill: var(--svg-fill, currentColor);\n transition: fill 0.2s ease-in-out;\n}\n\n/* --- Colors: Neutral --- */\n.root[data-color=\"normal\"] {\n --svg-fill: var(--color-content-neutral-base);\n}\n.root[data-color=\"secondary\"] {\n --svg-fill: var(--color-content-neutral-secondary);\n}\n.root[data-color=\"tertiary\"] {\n --svg-fill: var(--color-content-neutral-tertiary);\n}\n.root[data-color=\"muted\"] {\n --svg-fill: var(--color-content-neutral-muted);\n}\n\n/* --- Colors: Brand --- */\n.root[data-color=\"brand\"] {\n --svg-fill: var(--color-content-brand-base);\n}\n.root[data-color=\"brand-secondary\"] {\n --svg-fill: var(--color-content-brand-secondary);\n}\n.root[data-color=\"brand-tertiary\"] {\n --svg-fill: var(--color-content-brand-tertiary);\n}\n.root[data-color=\"brand-muted\"] {\n --svg-fill: var(--color-content-brand-muted);\n}\n\n/* --- Colors: Positive --- */\n.root[data-color=\"positive\"] {\n --svg-fill: var(--color-content-positive-base);\n}\n.root[data-color=\"positive-secondary\"] {\n --svg-fill: var(--color-content-positive-secondary);\n}\n.root[data-color=\"positive-tertiary\"] {\n --svg-fill: var(--color-content-positive-tertiary);\n}\n.root[data-color=\"positive-muted\"] {\n --svg-fill: var(--color-content-positive-muted);\n}\n\n/* --- Colors: Negative --- */\n.root[data-color=\"negative\"] {\n --svg-fill: var(--color-content-negative-base);\n}\n.root[data-color=\"negative-secondary\"] {\n --svg-fill: var(--color-content-negative-secondary);\n}\n.root[data-color=\"negative-tertiary\"] {\n --svg-fill: var(--color-content-negative-tertiary);\n}\n.root[data-color=\"negative-muted\"] {\n --svg-fill: var(--color-content-negative-muted);\n}\n\n/* --- Colors: Warn --- */\n.root[data-color=\"warn\"] {\n --svg-fill: var(--color-content-warn-base);\n}\n.root[data-color=\"warn-secondary\"] {\n --svg-fill: var(--color-content-warn-secondary);\n}\n.root[data-color=\"warn-tertiary\"] {\n --svg-fill: var(--color-content-warn-tertiary);\n}\n.root[data-color=\"warn-muted\"] {\n --svg-fill: var(--color-content-warn-muted);\n}\n\n/* --- Colors: Info --- */\n.root[data-color=\"info\"] {\n --svg-fill: var(--color-content-info-base);\n}\n.root[data-color=\"info-secondary\"] {\n --svg-fill: var(--color-content-info-secondary);\n}\n.root[data-color=\"info-tertiary\"] {\n --svg-fill: var(--color-content-info-tertiary);\n}\n.root[data-color=\"info-muted\"] {\n --svg-fill: var(--color-content-info-muted);\n}\n\n/* --- Colors: On-Backgrounds --- */\n.root[data-color=\"on-neutral\"] {\n --svg-fill: var(--color-on-neutral);\n}\n.root[data-color=\"on-brand\"] {\n --svg-fill: var(--color-on-brand);\n}\n.root[data-color=\"on-positive\"] {\n --svg-fill: var(--color-on-positive);\n}\n.root[data-color=\"on-negative\"] {\n --svg-fill: var(--color-on-negative);\n}\n.root[data-color=\"on-warn\"] {\n --svg-fill: var(--color-on-warn);\n}\n.root[data-color=\"on-info\"] {\n --svg-fill: var(--color-on-info);\n}\n"],"mappings":"AAEA,IAAA,EAAW,CAAA,KAAO,aAAK"}
@@ -0,0 +1 @@
1
+ import { BaseSvgProps, SvgColor } from "./base-svg.js";
@@ -0,0 +1 @@
1
+ import"./base-svg.js";
@@ -0,0 +1,43 @@
1
+ import { BaseDialogClassNames, BaseDialogOptions } from "../../internals/base-dialog/base-dialog.js";
2
+ //#region src/providers/alert-dialog-provider/alert-dialog-provider.d.ts
3
+ type AlertDialogContextValue = {
4
+ /** Imperatively open the alert dialog with the given options. */show: (options: BaseDialogOptions) => void;
5
+ };
6
+ declare const AlertDialogContext: import("react").Context<AlertDialogContextValue | null>;
7
+ /**
8
+ * Imperatively show the alert dialog from anywhere in the app,
9
+ * without needing access to React context.
10
+ *
11
+ * Requires `<AlertDialogProvider>` to be mounted in the tree.
12
+ *
13
+ * @example
14
+ * showAlertDialog({
15
+ * title: "Delete item?",
16
+ * variant: "negative",
17
+ * onConfirm: () => deleteItem(id),
18
+ * });
19
+ */
20
+ declare const showAlertDialog: (options: BaseDialogOptions) => void;
21
+ type AlertDialogProviderProps = {
22
+ /** The app subtree that can trigger alert dialogs. */children: React.ReactNode;
23
+ /**
24
+ * Optional className overrides for internal slots.
25
+ * Keys correspond to existing CSS module classes in `styles["..."]`.
26
+ */
27
+ classNames?: BaseDialogClassNames;
28
+ };
29
+ /**
30
+ * Provides imperative alert dialog functionality to the app.
31
+ *
32
+ * Mount once near the root of your app. Exposes `showAlertDialog()` for
33
+ * out-of-context usage and `useAlertDialog()` for in-context usage.
34
+ *
35
+ * @example
36
+ * <AlertDialogProvider>
37
+ * <App />
38
+ * </AlertDialogProvider>
39
+ */
40
+ declare const AlertDialogProvider: (props: AlertDialogProviderProps) => import("react/jsx-runtime").JSX.Element;
41
+ //#endregion
42
+ export { AlertDialogContext, AlertDialogProvider, AlertDialogProviderProps, showAlertDialog };
43
+ //# sourceMappingURL=alert-dialog-provider.d.ts.map
@@ -0,0 +1,2 @@
1
+ import{AlertDialog as e}from"../../atoms/alert-dialog/alert-dialog.js";import"../../atoms/alert-dialog/index.js";import{createContext as t,useCallback as n,useEffect as r,useState as i}from"react";import{jsx as a,jsxs as o}from"react/jsx-runtime";const s=t(null);let c=null;const l=e=>{if(!c){console.warn(`[AlertDialog] showAlertDialog() called before <AlertDialogProvider> is mounted.`);return}c(e)},u=t=>{let{children:l,classNames:u}=t,[d,f]=i({open:!1,title:``}),p=n(e=>{f({...e,open:!0})},[]);r(()=>(c=p,()=>{c=null}),[p]);let m=n(e=>{e||f(e=>({...e,open:!1}))},[]);return o(s.Provider,{value:{show:p},children:[l,a(e,{classNames:u,...d,onOpenChange:m})]})};export{s as AlertDialogContext,u as AlertDialogProvider,l as showAlertDialog};
2
+ //# sourceMappingURL=alert-dialog-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-dialog-provider.js","names":[],"sources":["../../../src/providers/alert-dialog-provider/alert-dialog-provider.tsx"],"sourcesContent":["import { createContext, useCallback, useEffect, useState } from \"react\";\nimport { AlertDialog } from \"../../atoms/alert-dialog\";\nimport type {\n BaseDialogClassNames,\n BaseDialogOptions,\n} from \"../../internals/base-dialog\";\n\ntype AlertDialogState = BaseDialogOptions & {\n open: boolean;\n};\n\ntype AlertDialogContextValue = {\n /** Imperatively open the alert dialog with the given options. */\n show: (options: BaseDialogOptions) => void;\n};\n\nexport const AlertDialogContext = createContext<AlertDialogContextValue | null>(\n null,\n);\n\n/** Singleton reference set when the provider mounts. */\nlet _show: ((options: BaseDialogOptions) => void) | null = null;\n\n/**\n * Imperatively show the alert dialog from anywhere in the app,\n * without needing access to React context.\n *\n * Requires `<AlertDialogProvider>` to be mounted in the tree.\n *\n * @example\n * showAlertDialog({\n * title: \"Delete item?\",\n * variant: \"negative\",\n * onConfirm: () => deleteItem(id),\n * });\n */\nexport const showAlertDialog = (options: BaseDialogOptions) => {\n if (!_show) {\n console.warn(\n \"[AlertDialog] showAlertDialog() called before <AlertDialogProvider> is mounted.\",\n );\n return;\n }\n _show(options);\n};\n\nexport type AlertDialogProviderProps = {\n /** The app subtree that can trigger alert dialogs. */\n children: React.ReactNode;\n /**\n * Optional className overrides for internal slots.\n * Keys correspond to existing CSS module classes in `styles[\"...\"]`.\n */\n classNames?: BaseDialogClassNames;\n};\n\n/**\n * Provides imperative alert dialog functionality to the app.\n *\n * Mount once near the root of your app. Exposes `showAlertDialog()` for\n * out-of-context usage and `useAlertDialog()` for in-context usage.\n *\n * @example\n * <AlertDialogProvider>\n * <App />\n * </AlertDialogProvider>\n */\nexport const AlertDialogProvider = (props: AlertDialogProviderProps) => {\n const { children, classNames } = props;\n\n const [state, setState] = useState<AlertDialogState>({\n open: false,\n title: \"\",\n });\n\n const show = useCallback((options: BaseDialogOptions) => {\n setState({ ...options, open: true });\n }, []);\n\n useEffect(() => {\n _show = show;\n return () => {\n _show = null;\n };\n }, [show]);\n\n const handleOpenChange = useCallback((open: boolean) => {\n if (!open) setState(prev => ({ ...prev, open: false }));\n }, []);\n\n return (\n <AlertDialogContext.Provider value={{ show }}>\n {children}\n <AlertDialog\n classNames={classNames}\n {...state}\n onOpenChange={handleOpenChange}\n />\n </AlertDialogContext.Provider>\n );\n};\n"],"mappings":"uPAgBA,MAAa,EAAqB,EAChC,IACF,EAGA,IAAI,EAAuD,KAe3D,MAAa,EAAmB,GAA+B,CAC7D,GAAI,CAAC,EAAO,CACV,QAAQ,KACN,iFACF,EACA,MACF,CACA,EAAM,CAAO,CACf,EAuBa,EAAuB,GAAoC,CACtE,GAAM,CAAE,WAAU,cAAe,EAE3B,CAAC,EAAO,GAAY,EAA2B,CACnD,KAAM,GACN,MAAO,EACT,CAAC,EAEK,EAAO,EAAa,GAA+B,CACvD,EAAS,CAAE,GAAG,EAAS,KAAM,EAAK,CAAC,CACrC,EAAG,CAAC,CAAC,EAEL,OACE,EAAQ,MACK,CACX,EAAQ,IACV,GACC,CAAC,CAAI,CAAC,EAET,IAAM,EAAmB,EAAa,GAAkB,CACjD,GAAM,EAAS,IAAS,CAAE,GAAG,EAAM,KAAM,EAAM,EAAE,CACxD,EAAG,CAAC,CAAC,EAEL,OACE,EAAC,EAAmB,SAApB,CAA6B,MAAO,CAAE,MAAK,WAA3C,CACG,EACD,EAAC,EAAD,CACc,aACZ,GAAI,EACJ,aAAc,CACf,CAAA,CAC0B,GAEjC"}
@@ -0,0 +1,16 @@
1
+ import { BaseDialogOptions } from "../../internals/base-dialog/base-dialog.js";
2
+ //#region src/providers/alert-dialog-provider/hooks.d.ts
3
+ /**
4
+ * Returns the `show` function to imperatively open the alert dialog.
5
+ * Must be used within `<AlertDialogProvider>`.
6
+ *
7
+ * @example
8
+ * const { show } = useAlertDialog();
9
+ * show({ title: "Are you sure?", onConfirm: handleDelete });
10
+ */
11
+ declare const useAlertDialog: () => {
12
+ show: (options: BaseDialogOptions) => void;
13
+ };
14
+ //#endregion
15
+ export { useAlertDialog };
16
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1,2 @@
1
+ import{AlertDialogContext as e}from"./alert-dialog-provider.js";import{useContext as t}from"react";const n=()=>{let n=t(e);if(!n)throw Error(`useAlertDialog must be used within <AlertDialogProvider>`);return n};export{n as useAlertDialog};
2
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","names":[],"sources":["../../../src/providers/alert-dialog-provider/hooks.ts"],"sourcesContent":["import { useContext } from \"react\";\nimport { AlertDialogContext } from \"./alert-dialog-provider\";\n\n/**\n * Returns the `show` function to imperatively open the alert dialog.\n * Must be used within `<AlertDialogProvider>`.\n *\n * @example\n * const { show } = useAlertDialog();\n * show({ title: \"Are you sure?\", onConfirm: handleDelete });\n */\nexport const useAlertDialog = () => {\n const ctx = useContext(AlertDialogContext);\n if (!ctx) {\n throw new Error(\"useAlertDialog must be used within <AlertDialogProvider>\");\n }\n return ctx;\n};\n"],"mappings":"mGAWA,MAAa,MAAuB,CAClC,IAAM,EAAM,EAAW,CAAkB,EACzC,GAAI,CAAC,EACH,MAAU,MAAM,0DAA0D,EAE5E,OAAO,CACT"}
@@ -0,0 +1,2 @@
1
+ import { AlertDialogContext, AlertDialogProvider, AlertDialogProviderProps, showAlertDialog } from "./alert-dialog-provider.js";
2
+ import { useAlertDialog } from "./hooks.js";
@@ -0,0 +1 @@
1
+ import"./alert-dialog-provider.js";import"./hooks.js";
@@ -0,0 +1,43 @@
1
+ import { BaseDialogClassNames, BaseDialogOptions } from "../../internals/base-dialog/base-dialog.js";
2
+ //#region src/providers/dialog-provider/dialog-provider.d.ts
3
+ type DialogContextValue = {
4
+ /** Imperatively open the alert dialog with the given options. */show: (options: BaseDialogOptions) => void;
5
+ };
6
+ declare const DialogContext: import("react").Context<DialogContextValue | null>;
7
+ /**
8
+ * Imperatively show the alert dialog from anywhere in the app,
9
+ * without needing access to React context.
10
+ *
11
+ * Requires `<DialogProvider>` to be mounted in the tree.
12
+ *
13
+ * @example
14
+ * showDialog({
15
+ * title: "Delete item?",
16
+ * variant: "negative",
17
+ * onConfirm: () => deleteItem(id),
18
+ * });
19
+ */
20
+ declare const showDialog: (options: BaseDialogOptions) => void;
21
+ type DialogProviderProps = {
22
+ /** The app subtree that can trigger alert dialogs. */children: React.ReactNode;
23
+ /**
24
+ * Optional className overrides for internal slots.
25
+ * Keys correspond to existing CSS module classes in `styles["..."]`.
26
+ */
27
+ classNames?: BaseDialogClassNames;
28
+ };
29
+ /**
30
+ * Provides imperative alert dialog functionality to the app.
31
+ *
32
+ * Mount once near the root of your app. Exposes `showDialog()` for
33
+ * out-of-context usage and `useDialog()` for in-context usage.
34
+ *
35
+ * @example
36
+ * <DialogProvider>
37
+ * <App />
38
+ * </DialogProvider>
39
+ */
40
+ declare const DialogProvider: (props: DialogProviderProps) => import("react/jsx-runtime").JSX.Element;
41
+ //#endregion
42
+ export { DialogContext, DialogProvider, DialogProviderProps, showDialog };
43
+ //# sourceMappingURL=dialog-provider.d.ts.map