@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":"tooltip.js","names":["Tooltip","BaseTooltip","styles"],"sources":["../../../src/atoms/tooltip/tooltip.tsx"],"sourcesContent":["import { Tooltip as BaseTooltip } from \"@base-ui/react/tooltip\";\nimport clsx from \"clsx\";\nimport * as React from \"react\";\nimport { usePortalConfig } from \"../../helpers/portal\";\nimport styles from \"./tooltip.module.css\";\n\nexport type TooltipProps = Omit<BaseTooltip.Root.Props, \"children\"> & {\n /**\n * The trigger element.\n * Should be a single React element that can accept props/refs (e.g. button).\n */\n children: React.ReactElement;\n /**\n * Tooltip content.\n */\n content: React.ReactNode;\n /**\n * Distance from trigger.\n */\n sideOffset?: number;\n /**\n * Whether to render the arrow.\n */\n arrow?: boolean;\n /**\n * Props forwarded to BaseTooltip.Popup.\n */\n popupProps?: Omit<BaseTooltip.Popup.Props, \"children\" | \"className\">;\n /**\n * Class name applied to the popup.\n */\n popupClassName?: string;\n /**\n * Class name applied to the arrow.\n */\n arrowClassName?: string;\n};\n\nexport function Tooltip({\n children,\n content,\n sideOffset = 8,\n arrow = true,\n popupProps,\n popupClassName,\n arrowClassName,\n ...rootProps\n}: TooltipProps) {\n const { resolveContainer } = usePortalConfig();\n const portalContainer = resolveContainer();\n\n return (\n <BaseTooltip.Root {...rootProps}>\n <BaseTooltip.Trigger className={styles[\"trigger\"]}>\n {children}\n </BaseTooltip.Trigger>\n\n <BaseTooltip.Portal container={portalContainer}>\n <BaseTooltip.Positioner sideOffset={sideOffset}>\n <BaseTooltip.Popup\n {...popupProps}\n className={clsx(styles[\"popup\"], popupClassName)}\n >\n {arrow ? (\n <BaseTooltip.Arrow\n className={clsx([styles[\"arrow\"], arrowClassName])}\n />\n ) : null}\n\n <BaseTooltip.Viewport className={styles[\"viewport\"]}>\n {content}\n </BaseTooltip.Viewport>\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n </BaseTooltip.Portal>\n </BaseTooltip.Root>\n );\n}\n\nexport type TooltipProviderProps = BaseTooltip.Provider.Props;\n\nexport function TooltipProvider(props: TooltipProviderProps) {\n return <BaseTooltip.Provider {...props} />;\n}\n"],"mappings":"sRAsCA,SAAgBA,EAAQ,CACtB,WACA,UACA,aAAa,EACb,QAAQ,GACR,aACA,iBACA,iBACA,GAAG,GACY,CACf,GAAM,CAAE,oBAAqB,EAAgB,EACvC,EAAkB,EAAiB,EAEzC,OACE,EAACC,EAAY,KAAb,CAAkB,GAAI,WAAtB,CACE,EAACA,EAAY,QAAb,CAAqB,UAAWC,EAAO,QACpC,UACkB,CAAA,EAErB,EAACD,EAAY,OAAb,CAAoB,UAAW,WAC7B,EAACA,EAAY,WAAb,CAAoC,sBAClC,EAACA,EAAY,MAAb,CACE,GAAI,EACJ,UAAW,EAAKC,EAAO,MAAU,CAAc,WAFjD,CAIG,EACC,EAACD,EAAY,MAAb,CACE,UAAW,EAAK,CAACC,EAAO,MAAU,CAAc,CAAC,CAClD,CAAA,EACC,KAEJ,EAACD,EAAY,SAAb,CAAsB,UAAWC,EAAO,kBACrC,CACmB,CAAA,CACL,GACG,CAAA,CACN,CAAA,CACJ,GAEtB,CAIA,SAAgB,EAAgB,EAA6B,CAC3D,OAAO,EAACD,EAAY,SAAb,CAAsB,GAAI,CAAQ,CAAA,CAC3C"}
@@ -0,0 +1,2 @@
1
+ var e={arrow:`o4Okuq_arrow`,popup:`o4Okuq_popup`,trigger:`o4Okuq_trigger`,viewport:`o4Okuq_viewport`};export{e as default};
2
+ //# sourceMappingURL=tooltip.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.module.js","names":[],"sources":["../../../src/atoms/tooltip/tooltip.module.css"],"sourcesContent":[".trigger {\n outline: none;\n margin: 0;\n padding: 0;\n border: 0;\n}\n\n.trigger: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.popup {\n box-sizing: border-box;\n position: relative;\n z-index: 1;\n display: flex;\n flex-direction: column;\n max-width: 20rem;\n padding: var(--spacing-xs) var(--spacing-sm);\n border-style: solid;\n border-width: 0.0625rem;\n border-color: var(--color-border-primary);\n border-radius: var(--spacing-xs);\n background-color: var(--color-surface-base);\n color: var(--color-content-neutral-base);\n box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.12);\n transform-origin: var(--transform-origin);\n transition:\n opacity 100ms ease-out,\n scale 100ms ease-out;\n}\n\n.popup[data-starting-style],\n.popup[data-ending-style] {\n opacity: 0;\n scale: 0.98;\n}\n\n.popup[data-instant] {\n transition: none;\n}\n\n.viewport {\n font-family: var(--typography-typeface-ltr);\n font-size: var(--typography-caption-base-size);\n line-height: 1.4;\n color: inherit;\n}\n\n.arrow {\n position: relative;\n display: block;\n width: 0.75rem;\n height: 0.375rem;\n overflow: clip;\n}\n/* TODO: fix hmr */\n/* TODO: fix arrow positions */\n\n.arrow[data-side=\"top\"] {\n bottom: -0.375rem;\n rotate: 180deg;\n}\n\n.arrow[data-side=\"bottom\"] {\n top: -0.375rem;\n rotate: 0deg;\n}\n\n.arrow[data-side=\"left\"] {\n right: -0.5625rem;\n rotate: 90deg;\n}\n\n.arrow[data-side=\"right\"] {\n left: -0.5625rem;\n rotate: -90deg;\n}\n\n.arrow::before {\n content: \"\";\n position: absolute;\n bottom: 0;\n left: 50%;\n box-sizing: border-box;\n display: block;\n width: calc(0.375rem * sqrt(2));\n height: calc(0.375rem * sqrt(2));\n border-style: solid;\n border-width: 0.0625rem;\n border-color: var(--color-border-primary);\n background-color: var(--color-surface-base);\n transform: translate(-50%, 50%) rotate(45deg);\n}\n"],"mappings":"AAQA,IAAA,EAAe,CAAC,MAAM,eAAA,MAAA,eAAA,QAAA,iBAAA,SAAA,iBAAA"}
@@ -0,0 +1,7 @@
1
+ import { PortalConfigValue } from "./portal-config.js";
2
+
3
+ //#region src/helpers/portal/context/hooks.d.ts
4
+ declare const usePortalConfig: () => PortalConfigValue;
5
+ //#endregion
6
+ export { usePortalConfig };
7
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1,2 @@
1
+ import{PortalConfig as e}from"./portal-config.js";import{useContext as t}from"react";const n=()=>{let n=t(e);if(!n)throw Error(`usePortalConfig must be used within an PortalConfigProvider.`);return n};export{n as usePortalConfig};
2
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","names":[],"sources":["../../../../src/helpers/portal/context/hooks.ts"],"sourcesContent":["import { useContext } from \"react\";\nimport { PortalConfig, type PortalConfigValue } from \"./portal-config.ts\";\n\nexport const usePortalConfig = (): PortalConfigValue => {\n const portalConfig = useContext(PortalConfig);\n\n if (!portalConfig) {\n throw new Error(\n \"usePortalConfig must be used within an PortalConfigProvider.\",\n );\n }\n\n return portalConfig;\n};\n"],"mappings":"qFAGA,MAAa,MAA2C,CACtD,IAAM,EAAe,EAAW,CAAY,EAE5C,GAAI,CAAC,EACH,MAAU,MACR,8DACF,EAGF,OAAO,CACT"}
@@ -0,0 +1,2 @@
1
+ import { usePortalConfig } from "./hooks.js";
2
+ import { PortalConfigProvider } from "./provider.js";
@@ -0,0 +1 @@
1
+ import"./hooks.js";import"./provider.js";
@@ -0,0 +1,12 @@
1
+ //#region src/helpers/portal/context/portal-config.d.ts
2
+ type PortalConfigValue = {
3
+ /**
4
+ * A function that will resolve the container element for the portals.
5
+ *
6
+ * Please note that this function is only called on the client-side.
7
+ */
8
+ resolveContainer: () => HTMLElement | null;
9
+ };
10
+ //#endregion
11
+ export { PortalConfigValue };
12
+ //# sourceMappingURL=portal-config.d.ts.map
@@ -0,0 +1,2 @@
1
+ import*as e from"react";const t=e.createContext(null);export{t as PortalConfig};
2
+ //# sourceMappingURL=portal-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portal-config.js","names":[],"sources":["../../../../src/helpers/portal/context/portal-config.ts"],"sourcesContent":["import * as React from \"react\";\n\nexport type PortalConfigValue = {\n /**\n * A function that will resolve the container element for the portals.\n *\n * Please note that this function is only called on the client-side.\n */\n resolveContainer: () => HTMLElement | null;\n};\n\nexport const PortalConfig = React.createContext<PortalConfigValue | null>(null);\n"],"mappings":"wBAWA,MAAa,EAAe,EAAM,cAAwC,IAAI"}
@@ -0,0 +1,11 @@
1
+ import { PortalConfigValue } from "./portal-config.js";
2
+
3
+ //#region src/helpers/portal/context/provider.d.ts
4
+ type Props = {
5
+ children: React.ReactNode;
6
+ config: PortalConfigValue;
7
+ };
8
+ declare const PortalConfigProvider: React.FC<Props>;
9
+ //#endregion
10
+ export { PortalConfigProvider };
11
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1,2 @@
1
+ import{PortalConfig as e}from"./portal-config.js";import{useMemo as t}from"react";import{jsx as n}from"react/jsx-runtime";const r=r=>{let{config:i,children:a}=r,{resolveContainer:o}=i??{},s=t(()=>({resolveContainer:o}),[o]);return n(e.Provider,{value:s,children:a})};export{r as PortalConfigProvider};
2
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","names":[],"sources":["../../../../src/helpers/portal/context/provider.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { PortalConfig, type PortalConfigValue } from \"./portal-config.ts\";\n\ntype Props = {\n children: React.ReactNode;\n config: PortalConfigValue;\n};\n\nexport const PortalConfigProvider: React.FC<Props> = (props) => {\n const { config, children } = props;\n const { resolveContainer } = config ?? {};\n\n const context = useMemo(\n () => ({ resolveContainer }) satisfies PortalConfigValue,\n [resolveContainer],\n );\n\n return (\n <PortalConfig.Provider value={context}>{children}</PortalConfig.Provider>\n );\n};\n"],"mappings":"0HAQA,MAAa,EAAyC,GAAU,CAC9D,GAAM,CAAE,SAAQ,YAAa,EACvB,CAAE,oBAAqB,GAAU,CAAC,EAElC,EAAU,OACP,CAAE,kBAAiB,GAC1B,CAAC,CAAgB,CACnB,EAEA,OACE,EAAC,EAAa,SAAd,CAAuB,MAAO,EAAU,UAAgC,CAAA,CAE5E"}
@@ -0,0 +1,3 @@
1
+ import { usePortalConfig } from "./context/hooks.js";
2
+ import { PortalConfigProvider } from "./context/provider.js";
3
+ import { Portal, PortalProps } from "./portal.js";
@@ -0,0 +1 @@
1
+ import"./context/hooks.js";import"./context/provider.js";import"./context/index.internal.js";import"./portal.js";
@@ -0,0 +1,24 @@
1
+ //#region src/helpers/portal/portal.d.ts
2
+ type PortalProps = {
3
+ /**
4
+ * A function that will resolve the container element for the portal.
5
+ * If not provided will opt-in `PortalConfigProvider` configuration as default behavior.
6
+ *
7
+ * Please note that this function is only called on the client-side.
8
+ */
9
+ resolveContainer?: () => HTMLElement | null;
10
+ /**
11
+ * The children to render into the container.
12
+ */
13
+ children: React.ReactNode;
14
+ /**
15
+ * If `true`, the `children` will be under the DOM hierarchy of the parent component.
16
+ *
17
+ * @default false
18
+ */
19
+ disabled?: boolean;
20
+ };
21
+ declare const Portal: React.FC<PortalProps>;
22
+ //#endregion
23
+ export { Portal, PortalProps };
24
+ //# sourceMappingURL=portal.d.ts.map
@@ -0,0 +1,2 @@
1
+ import{usePortalConfig as e}from"./context/hooks.js";import"./context/index.internal.js";import{Fragment as t,jsx as n}from"react/jsx-runtime";import{useIsomorphicValue as r}from"@pantool/lib";import{createPortal as i}from"react-dom";const a=a=>{let{resolveContainer:o,children:s,disabled:c=!1}=a,l=e(),u=r(o??l.resolveContainer,null);return c?n(t,{children:s}):u?i(s,u):null};export{a as Portal};
2
+ //# sourceMappingURL=portal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portal.js","names":[],"sources":["../../../src/helpers/portal/portal.tsx"],"sourcesContent":["import { useIsomorphicValue } from \"@pantool/lib\";\nimport { createPortal } from \"react-dom\";\nimport { usePortalConfig } from \"./context/index.internal.ts\";\n\nexport type PortalProps = {\n /**\n * A function that will resolve the container element for the portal.\n * If not provided will opt-in `PortalConfigProvider` configuration as default behavior.\n *\n * Please note that this function is only called on the client-side.\n */\n resolveContainer?: () => HTMLElement | null;\n\n /**\n * The children to render into the container.\n */\n children: React.ReactNode;\n\n /**\n * If `true`, the `children` will be under the DOM hierarchy of the parent component.\n *\n * @default false\n */\n disabled?: boolean;\n};\n\nexport const Portal: React.FC<PortalProps> = props => {\n const { resolveContainer, children, disabled = false } = props;\n\n const portalConfig = usePortalConfig();\n\n const containerResolver = resolveContainer ?? portalConfig.resolveContainer;\n\n const container = useIsomorphicValue(containerResolver, null);\n\n if (disabled) return <>{children}</>;\n if (!container) return null;\n\n return createPortal(children, container);\n};\n"],"mappings":"0OA0BA,MAAa,EAAgC,GAAS,CACpD,GAAM,CAAE,mBAAkB,WAAU,WAAW,IAAU,EAEnD,EAAe,EAAgB,EAI/B,EAAY,EAFQ,GAAoB,EAAa,iBAEH,IAAI,EAK5D,OAHI,EAAiB,EAAA,EAAA,CAAG,UAAW,CAAA,EAC9B,EAEE,EAAa,EAAU,CAAS,EAFhB,IAGzB"}
@@ -0,0 +1,27 @@
1
+ import { AlertDialog, AlertDialogProps } from "./atoms/alert-dialog/alert-dialog.js";
2
+ import { Button, ButtonProps } from "./atoms/button/button.js";
3
+ import { Checkbox, CheckboxProps } from "./atoms/checkbox/checkbox.js";
4
+ import { Combobox, ComboboxGroup, ComboboxProps } from "./atoms/combobox/combobox.js";
5
+ import { ContextMenu } from "./atoms/context-menu/context-menu.js";
6
+ import { Dialog, DialogProps } from "./atoms/dialog/dialog.js";
7
+ import { Icon, IconProps } from "./atoms/icon/icon.js";
8
+ import { IconButton, IconButtonProps } from "./atoms/icon-button/icon-button.js";
9
+ import { Input, InputProps } from "./atoms/input/input.js";
10
+ import { Radio, RadioGroup, RadioGroupProps, RadioProps } from "./atoms/radio/radio.js";
11
+ import { Switch, SwitchProps } from "./atoms/switch/switch.js";
12
+ import { Tabs, TabsList, TabsListProps, TabsPanel, TabsPanelProps, TabsTab, TabsTabProps } from "./atoms/tabs/tabs.js";
13
+ import { TabsListState, TabsPanelState, TabsRootChangeEventDetails, TabsRootState, TabsTabState, TabsTabValue } from "./atoms/tabs/index.js";
14
+ import { MergeElementProps, MergeElementPropsWithOmitted, PolymorphicProps, PolymorphicPropsWithOmitted, WithBaseProps, WithColorProps, WithRef } from "./types.js";
15
+ import { Text, TextColor, TextProps, TextVariant } from "./atoms/text/text.js";
16
+ import { Toast, ToastData, ToastProps } from "./atoms/toast/toast.js";
17
+ import { Tooltip, TooltipProps, TooltipProvider, TooltipProviderProps } from "./atoms/tooltip/tooltip.js";
18
+ import { ConditionGuard, ConditionGuardProps } from "./atoms/condition-guard/condition-guard.js";
19
+ import { usePortalConfig } from "./helpers/portal/context/hooks.js";
20
+ import { PortalConfigProvider } from "./helpers/portal/context/provider.js";
21
+ import { Portal, PortalProps } from "./helpers/portal/portal.js";
22
+ import { AlertDialogContext, AlertDialogProvider, AlertDialogProviderProps, showAlertDialog } from "./providers/alert-dialog-provider/alert-dialog-provider.js";
23
+ import { useAlertDialog } from "./providers/alert-dialog-provider/hooks.js";
24
+ import { DialogContext, DialogProvider, DialogProviderProps, showDialog } from "./providers/dialog-provider/dialog-provider.js";
25
+ import { useDialog } from "./providers/dialog-provider/hooks.js";
26
+ import { ToastProvider, ToastProviderProps, toaster } from "./providers/toast-provider/toast-provider.js";
27
+ export { AlertDialog, AlertDialogContext, AlertDialogProps, AlertDialogProvider, AlertDialogProviderProps, Button, ButtonProps, Checkbox, CheckboxProps, Combobox, ComboboxGroup, ComboboxProps, ConditionGuard, ConditionGuardProps, ContextMenu, Dialog, DialogContext, DialogProps, DialogProvider, DialogProviderProps, Icon, IconButton, IconButtonProps, IconProps, Input, InputProps, MergeElementProps, MergeElementPropsWithOmitted, PolymorphicProps, PolymorphicPropsWithOmitted, Portal, PortalConfigProvider, PortalProps, Radio, RadioGroup, RadioGroupProps, RadioProps, Switch, SwitchProps, Tabs, TabsList, type TabsListProps, type TabsListState, TabsPanel, type TabsPanelProps, type TabsPanelState, type TabsRootChangeEventDetails, type TabsRootState, TabsTab, type TabsTabProps, type TabsTabState, type TabsTabValue, Text, TextColor, TextProps, TextVariant, Toast, ToastData, ToastProps, ToastProvider, ToastProviderProps, Tooltip, TooltipProps, TooltipProvider, TooltipProviderProps, WithBaseProps, WithColorProps, WithRef, showAlertDialog, showDialog, toaster, useAlertDialog, useDialog, usePortalConfig };
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ import{Button as e}from"./atoms/button/button.js";import{Text as t}from"./atoms/text/text.js";import{usePortalConfig as n}from"./helpers/portal/context/hooks.js";import{PortalConfigProvider as r}from"./helpers/portal/context/provider.js";import{Portal as i}from"./helpers/portal/portal.js";import{AlertDialog as a}from"./atoms/alert-dialog/alert-dialog.js";import{Icon as o}from"./atoms/icon/icon.js";import{Checkbox as s}from"./atoms/checkbox/checkbox.js";import{Combobox as c}from"./atoms/combobox/combobox.js";import{ContextMenu as l}from"./atoms/context-menu/context-menu.js";import{Dialog as u}from"./atoms/dialog/dialog.js";import{IconButton as d}from"./atoms/icon-button/icon-button.js";import{Input as f}from"./atoms/input/input.js";import{Radio as p,RadioGroup as m}from"./atoms/radio/radio.js";import{Switch as h}from"./atoms/switch/switch.js";import{Tabs as g,TabsList as _,TabsPanel as v,TabsTab as y}from"./atoms/tabs/tabs.js";import{Toast as b}from"./atoms/toast/toast.js";import{Tooltip as x,TooltipProvider as S}from"./atoms/tooltip/tooltip.js";import{ConditionGuard as C}from"./atoms/condition-guard/condition-guard.js";import"./atoms/index.js";import{AlertDialogContext as w,AlertDialogProvider as T,showAlertDialog as E}from"./providers/alert-dialog-provider/alert-dialog-provider.js";import{useAlertDialog as D}from"./providers/alert-dialog-provider/hooks.js";import{DialogContext as O,DialogProvider as k,showDialog as A}from"./providers/dialog-provider/dialog-provider.js";import{useDialog as j}from"./providers/dialog-provider/hooks.js";import{ToastProvider as M,toaster as N}from"./providers/toast-provider/toast-provider.js";import"./providers/index.js";import"./types.js";export{a as AlertDialog,w as AlertDialogContext,T as AlertDialogProvider,e as Button,s as Checkbox,c as Combobox,C as ConditionGuard,l as ContextMenu,u as Dialog,O as DialogContext,k as DialogProvider,o as Icon,d as IconButton,f as Input,i as Portal,r as PortalConfigProvider,p as Radio,m as RadioGroup,h as Switch,g as Tabs,_ as TabsList,v as TabsPanel,y as TabsTab,t as Text,b as Toast,M as ToastProvider,x as Tooltip,S as TooltipProvider,E as showAlertDialog,A as showDialog,N as toaster,D as useAlertDialog,j as useDialog,n as usePortalConfig};
@@ -0,0 +1,262 @@
1
+ ._4R_YnW_root {
2
+ box-sizing: border-box;
3
+ cursor: pointer;
4
+ user-select: none;
5
+ font-family: var(--typography-typeface-ltr);
6
+ font-weight: var(--typography-body-2-weight);
7
+ border-radius: var(--radius-full);
8
+ height: var(--btn-height);
9
+ padding: 0 var(--btn-padding-x);
10
+ font-size: var(--btn-font-size);
11
+ background-color: var(--btn-bg);
12
+ color: var(--btn-text);
13
+ border: none;
14
+ border: 1px solid var(--btn-border);
15
+ outline: none;
16
+ justify-content: center;
17
+ align-items: center;
18
+ text-decoration: none;
19
+ transition: background-color .2s, color .2s, border-color .2s, opacity .2s;
20
+ display: inline-flex;
21
+ }
22
+
23
+ ._4R_YnW_root[data-size="sm"] {
24
+ --btn-height: 1.5rem;
25
+ --btn-icon-size: 1rem;
26
+ --btn-padding-x: var(--spacing-sm);
27
+ --btn-font-size: var(--typography-body-2-size);
28
+ }
29
+
30
+ ._4R_YnW_root[data-size="md"] {
31
+ --btn-height: 2rem;
32
+ --btn-icon-size: 1.5rem;
33
+ --btn-padding-x: var(--spacing-md);
34
+ --btn-font-size: var(--typography-body-2-size);
35
+ }
36
+
37
+ ._4R_YnW_root[data-size="lg"] {
38
+ --btn-height: 2.5rem;
39
+ --btn-icon-size: 2rem;
40
+ --btn-padding-x: var(--spacing-lg);
41
+ --btn-font-size: var(--typography-body-1-size);
42
+ }
43
+
44
+ ._4R_YnW_root[data-fluid] {
45
+ width: 100%;
46
+ }
47
+
48
+ ._4R_YnW_root:focus-visible {
49
+ outline-style: solid;
50
+ outline-width: var(--stroke-focus-ring);
51
+ outline-color: var(--color-action-info-base);
52
+ outline-offset: var(--spacing-xxs);
53
+ }
54
+
55
+ ._4R_YnW_root[disabled], ._4R_YnW_root[data-disabled] {
56
+ cursor: not-allowed;
57
+ opacity: .5;
58
+ }
59
+
60
+ ._4R_YnW_root[data-color="neutral"][data-variant="filled"] {
61
+ --btn-bg: var(--color-action-neutral-base);
62
+ --btn-text: var(--color-on-neutral);
63
+ --btn-border: transparent;
64
+ }
65
+
66
+ ._4R_YnW_root[data-color="neutral"][data-variant="filled"]:hover:not([disabled]) {
67
+ --btn-bg: var(--color-action-neutral-hover);
68
+ }
69
+
70
+ ._4R_YnW_root[data-color="neutral"][data-variant="filled"]:active:not([disabled]) {
71
+ --btn-bg: var(--color-action-neutral-active);
72
+ }
73
+
74
+ ._4R_YnW_root[data-color="neutral"][data-variant="outlined"] {
75
+ --btn-bg: transparent;
76
+ --btn-text: var(--color-content-neutral-base);
77
+ --btn-border: var(--color-content-neutral-base);
78
+ }
79
+
80
+ ._4R_YnW_root[data-color="neutral"][data-variant="outlined"]:hover:not([disabled]) {
81
+ --btn-bg: var(--color-surface-secondary);
82
+ }
83
+
84
+ ._4R_YnW_root[data-color="neutral"][data-variant="ghost"] {
85
+ --btn-bg: transparent;
86
+ --btn-text: var(--color-content-neutral-base);
87
+ --btn-border: transparent;
88
+ }
89
+
90
+ ._4R_YnW_root[data-color="neutral"][data-variant="ghost"]:hover:not([disabled]) {
91
+ --btn-bg: var(--color-surface-secondary);
92
+ }
93
+
94
+ ._4R_YnW_root[data-color="brand"][data-variant="filled"] {
95
+ --btn-bg: var(--color-action-brand-base);
96
+ --btn-text: var(--color-on-brand);
97
+ --btn-border: transparent;
98
+ }
99
+
100
+ ._4R_YnW_root[data-color="brand"][data-variant="filled"]:hover:not([disabled]) {
101
+ --btn-bg: var(--color-action-brand-hover);
102
+ }
103
+
104
+ ._4R_YnW_root[data-color="brand"][data-variant="filled"]:active:not([disabled]) {
105
+ --btn-bg: var(--color-action-brand-active);
106
+ }
107
+
108
+ ._4R_YnW_root[data-color="brand"][data-variant="outlined"] {
109
+ --btn-bg: transparent;
110
+ --btn-text: var(--color-content-brand-base);
111
+ --btn-border: var(--color-content-brand-base);
112
+ }
113
+
114
+ ._4R_YnW_root[data-color="brand"][data-variant="outlined"]:hover:not([disabled]) {
115
+ --btn-bg: var(--color-surface-secondary);
116
+ }
117
+
118
+ ._4R_YnW_root[data-color="brand"][data-variant="ghost"] {
119
+ --btn-bg: transparent;
120
+ --btn-text: var(--color-content-brand-base);
121
+ --btn-border: transparent;
122
+ }
123
+
124
+ ._4R_YnW_root[data-color="brand"][data-variant="ghost"]:hover:not([disabled]) {
125
+ --btn-bg: var(--color-surface-secondary);
126
+ }
127
+
128
+ ._4R_YnW_root[data-color="positive"][data-variant="filled"] {
129
+ --btn-bg: var(--color-action-positive-base);
130
+ --btn-text: var(--color-on-positive);
131
+ --btn-border: transparent;
132
+ }
133
+
134
+ ._4R_YnW_root[data-color="positive"][data-variant="filled"]:hover:not([disabled]) {
135
+ --btn-bg: var(--color-action-positive-hover);
136
+ }
137
+
138
+ ._4R_YnW_root[data-color="positive"][data-variant="filled"]:active:not([disabled]) {
139
+ --btn-bg: var(--color-action-positive-active);
140
+ }
141
+
142
+ ._4R_YnW_root[data-color="positive"][data-variant="outlined"] {
143
+ --btn-bg: transparent;
144
+ --btn-text: var(--color-content-positive-base);
145
+ --btn-border: var(--color-content-positive-base);
146
+ }
147
+
148
+ ._4R_YnW_root[data-color="positive"][data-variant="outlined"]:hover:not([disabled]) {
149
+ --btn-bg: var(--color-surface-secondary);
150
+ }
151
+
152
+ ._4R_YnW_root[data-color="positive"][data-variant="ghost"] {
153
+ --btn-bg: transparent;
154
+ --btn-text: var(--color-content-positive-base);
155
+ --btn-border: transparent;
156
+ }
157
+
158
+ ._4R_YnW_root[data-color="positive"][data-variant="ghost"]:hover:not([disabled]) {
159
+ --btn-bg: var(--color-surface-secondary);
160
+ }
161
+
162
+ ._4R_YnW_root[data-color="negative"][data-variant="filled"] {
163
+ --btn-bg: var(--color-action-negative-base);
164
+ --btn-text: var(--color-on-negative);
165
+ --btn-border: transparent;
166
+ }
167
+
168
+ ._4R_YnW_root[data-color="negative"][data-variant="filled"]:hover:not([disabled]) {
169
+ --btn-bg: var(--color-action-negative-hover);
170
+ }
171
+
172
+ ._4R_YnW_root[data-color="negative"][data-variant="filled"]:active:not([disabled]) {
173
+ --btn-bg: var(--color-action-negative-active);
174
+ }
175
+
176
+ ._4R_YnW_root[data-color="negative"][data-variant="outlined"] {
177
+ --btn-bg: transparent;
178
+ --btn-text: var(--color-content-negative-base);
179
+ --btn-border: var(--color-content-negative-base);
180
+ }
181
+
182
+ ._4R_YnW_root[data-color="negative"][data-variant="outlined"]:hover:not([disabled]) {
183
+ --btn-bg: var(--color-surface-secondary);
184
+ }
185
+
186
+ ._4R_YnW_root[data-color="negative"][data-variant="ghost"] {
187
+ --btn-bg: transparent;
188
+ --btn-text: var(--color-content-negative-base);
189
+ --btn-border: transparent;
190
+ }
191
+
192
+ ._4R_YnW_root[data-color="negative"][data-variant="ghost"]:hover:not([disabled]) {
193
+ --btn-bg: var(--color-surface-secondary);
194
+ }
195
+
196
+ ._4R_YnW_root[data-color="warn"][data-variant="filled"] {
197
+ --btn-bg: var(--color-action-warn-base);
198
+ --btn-text: var(--color-on-warn);
199
+ --btn-border: transparent;
200
+ }
201
+
202
+ ._4R_YnW_root[data-color="warn"][data-variant="filled"]:hover:not([disabled]) {
203
+ --btn-bg: var(--color-action-warn-hover);
204
+ }
205
+
206
+ ._4R_YnW_root[data-color="warn"][data-variant="filled"]:active:not([disabled]) {
207
+ --btn-bg: var(--color-action-warn-active);
208
+ }
209
+
210
+ ._4R_YnW_root[data-color="warn"][data-variant="outlined"] {
211
+ --btn-bg: transparent;
212
+ --btn-text: var(--color-content-warn-base);
213
+ --btn-border: var(--color-content-warn-base);
214
+ }
215
+
216
+ ._4R_YnW_root[data-color="warn"][data-variant="outlined"]:hover:not([disabled]) {
217
+ --btn-bg: var(--color-surface-secondary);
218
+ }
219
+
220
+ ._4R_YnW_root[data-color="warn"][data-variant="ghost"] {
221
+ --btn-bg: transparent;
222
+ --btn-text: var(--color-content-warn-base);
223
+ --btn-border: transparent;
224
+ }
225
+
226
+ ._4R_YnW_root[data-color="warn"][data-variant="ghost"]:hover:not([disabled]) {
227
+ --btn-bg: var(--color-surface-secondary);
228
+ }
229
+
230
+ ._4R_YnW_root[data-color="info"][data-variant="filled"] {
231
+ --btn-bg: var(--color-action-info-base);
232
+ --btn-text: var(--color-on-info);
233
+ --btn-border: transparent;
234
+ }
235
+
236
+ ._4R_YnW_root[data-color="info"][data-variant="filled"]:hover:not([disabled]) {
237
+ --btn-bg: var(--color-action-info-hover);
238
+ }
239
+
240
+ ._4R_YnW_root[data-color="info"][data-variant="filled"]:active:not([disabled]) {
241
+ --btn-bg: var(--color-action-info-active);
242
+ }
243
+
244
+ ._4R_YnW_root[data-color="info"][data-variant="outlined"] {
245
+ --btn-bg: transparent;
246
+ --btn-text: var(--color-content-info-base);
247
+ --btn-border: var(--color-content-info-base);
248
+ }
249
+
250
+ ._4R_YnW_root[data-color="info"][data-variant="outlined"]:hover:not([disabled]) {
251
+ --btn-bg: var(--color-surface-secondary);
252
+ }
253
+
254
+ ._4R_YnW_root[data-color="info"][data-variant="ghost"] {
255
+ --btn-bg: transparent;
256
+ --btn-text: var(--color-content-info-base);
257
+ --btn-border: transparent;
258
+ }
259
+
260
+ ._4R_YnW_root[data-color="info"][data-variant="ghost"]:hover:not([disabled]) {
261
+ --btn-bg: var(--color-surface-secondary);
262
+ }
@@ -0,0 +1,19 @@
1
+ import * as React from "react";
2
+ import { Button } from "@base-ui/react/button";
3
+
4
+ //#region src/internals/base-button/base-button.d.ts
5
+ interface BaseButtonProps extends React.ComponentPropsWithoutRef<typeof Button> {
6
+ /** The visual style of the button. */
7
+ variant?: "filled" | "outlined" | "ghost";
8
+ /** The semantic color palette applied to the button. */
9
+ color?: "neutral" | "brand" | "positive" | "negative" | "warn" | "info";
10
+ /** The size of the button, affecting height, padding, and font size. */
11
+ size?: "sm" | "md" | "lg";
12
+ /** If true, the button is in a loading state and becomes disabled. */
13
+ pending?: boolean;
14
+ /** If true, the button will take up 100% of its container's width. */
15
+ fluid?: boolean;
16
+ }
17
+ //#endregion
18
+ export { BaseButtonProps };
19
+ //# sourceMappingURL=base-button.d.ts.map
@@ -0,0 +1,2 @@
1
+ import e from"./base-button.module.js";import*as t from"react";import{Button as n}from"@base-ui/react/button";import{jsx as r}from"react/jsx-runtime";const i=t.forwardRef((t,i)=>{let{className:a,variant:o=`filled`,color:s=`neutral`,size:c=`md`,pending:l=!1,fluid:u=!1,disabled:d,children:f,...p}=t;return r(n,{ref:i,className:`${e.root} ${a||``}`.trim(),"data-variant":o,"data-color":s,"data-size":c,"data-pending":l?``:void 0,"data-fluid":u?``:void 0,disabled:d||l,...p,children:f})});export{i as BaseButton};
2
+ //# sourceMappingURL=base-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-button.js","names":["BaseUIButton","styles"],"sources":["../../../src/internals/base-button/base-button.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Button as BaseUIButton } from \"@base-ui/react/button\";\nimport styles from \"./base-button.module.css\";\n\nexport interface BaseButtonProps extends React.ComponentPropsWithoutRef<\n typeof BaseUIButton\n> {\n /** The visual style of the button. */\n variant?: \"filled\" | \"outlined\" | \"ghost\";\n /** The semantic color palette applied to the button. */\n color?: \"neutral\" | \"brand\" | \"positive\" | \"negative\" | \"warn\" | \"info\";\n /** The size of the button, affecting height, padding, and font size. */\n size?: \"sm\" | \"md\" | \"lg\";\n /** If true, the button is in a loading state and becomes disabled. */\n pending?: boolean;\n /** If true, the button will take up 100% of its container's width. */\n fluid?: boolean;\n}\n\nexport const BaseButton = React.forwardRef<HTMLButtonElement, BaseButtonProps>(\n (props, ref) => {\n const {\n className,\n variant = \"filled\",\n color = \"neutral\",\n size = \"md\",\n pending = false,\n fluid = false,\n disabled,\n children,\n ...rest\n } = props;\n\n return (\n <BaseUIButton\n ref={ref}\n className={`${styles[\"root\"]} ${className || \"\"}`.trim()}\n data-variant={variant}\n data-color={color}\n data-size={size}\n data-pending={pending ? \"\" : undefined}\n data-fluid={fluid ? \"\" : undefined}\n disabled={disabled || pending}\n {...rest}\n >\n {children}\n </BaseUIButton>\n );\n },\n);\n"],"mappings":"sJAmBA,MAAa,EAAa,EAAM,YAC7B,EAAO,IAAQ,CACd,GAAM,CACJ,YACA,UAAU,SACV,QAAQ,UACR,OAAO,KACP,UAAU,GACV,QAAQ,GACR,WACA,WACA,GAAG,GACD,EAEJ,OACE,EAACA,EAAD,CACO,MACL,UAAW,GAAGC,EAAO,KAAQ,GAAG,GAAa,KAAK,KAAK,EACvD,eAAc,EACd,aAAY,EACZ,YAAW,EACX,eAAc,EAAU,GAAK,IAAA,GAC7B,aAAY,EAAQ,GAAK,IAAA,GACzB,SAAU,GAAY,EACtB,GAAI,EAEH,UACW,CAAA,CAElB,CACF"}
@@ -0,0 +1,2 @@
1
+ var e={root:`_4R_YnW_root`};export{e as default};
2
+ //# sourceMappingURL=base-button.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-button.module.js","names":[],"sources":["../../../src/internals/base-button/base-button.module.css"],"sourcesContent":[".root {\n /* 1. Map internal variables to CSS properties */\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n outline: none;\n border: none;\n cursor: pointer;\n user-select: none;\n text-decoration: none;\n font-family: var(--typography-typeface-ltr);\n font-weight: var(--typography-body-2-weight);\n border-radius: var(--radius-full);\n transition:\n background-color 0.2s,\n color 0.2s,\n border-color 0.2s,\n opacity 0.2s;\n\n /* Apply local variables */\n height: var(--btn-height);\n padding: 0 var(--btn-padding-x);\n font-size: var(--btn-font-size);\n background-color: var(--btn-bg);\n color: var(--btn-text);\n border: 1px solid var(--btn-border);\n}\n\n/* --- Sizes --- */\n.root[data-size=\"sm\"] {\n --btn-height: 1.5rem;\n --btn-icon-size: 1rem;\n --btn-padding-x: var(--spacing-sm);\n --btn-font-size: var(--typography-body-2-size);\n}\n\n.root[data-size=\"md\"] {\n --btn-height: 2rem;\n --btn-icon-size: 1.5rem;\n --btn-padding-x: var(--spacing-md);\n --btn-font-size: var(--typography-body-2-size);\n}\n\n.root[data-size=\"lg\"] {\n --btn-height: 2.5rem;\n --btn-icon-size: 2rem;\n --btn-padding-x: var(--spacing-lg);\n --btn-font-size: var(--typography-body-1-size);\n}\n\n/* --- Layout Modifiers --- */\n.root[data-fluid] {\n width: 100%;\n}\n\n/* --- Focus Ring (Base UI provides data-focus-visible) --- */\n.root: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/* --- Disabled State --- */\n.root[disabled],\n.root[data-disabled] {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n/* --- Variants & Colors: BRAND Example --- */\n/* (You would duplicate this block for neutral, positive, negative, etc.) */\n\n/* Brand Filled */\n.root[data-color=\"brand\"][data-variant=\"filled\"] {\n --btn-bg: var(--color-action-brand-base);\n --btn-text: var(--color-on-brand);\n --btn-border: transparent;\n}\n.root[data-color=\"brand\"][data-variant=\"filled\"]:hover:not([disabled]) {\n --btn-bg: var(--color-action-brand-hover);\n}\n.root[data-color=\"brand\"][data-variant=\"filled\"]:active:not([disabled]) {\n --btn-bg: var(--color-action-brand-active);\n}\n\n/* Brand Outlined */\n.root[data-color=\"brand\"][data-variant=\"outlined\"] {\n --btn-bg: transparent;\n --btn-text: var(--color-content-brand-base);\n --btn-border: var(--color-content-brand-base);\n}\n.root[data-color=\"brand\"][data-variant=\"outlined\"]:hover:not([disabled]) {\n --btn-bg: var(--color-surface-secondary);\n}\n\n/* Brand Ghost */\n.root[data-color=\"brand\"][data-variant=\"ghost\"] {\n --btn-bg: transparent;\n --btn-text: var(--color-content-brand-base);\n --btn-border: transparent;\n}\n.root[data-color=\"brand\"][data-variant=\"ghost\"]:hover:not([disabled]) {\n --btn-bg: var(--color-surface-secondary);\n}\n\n/* --- Variants & Colors --- */\n\n/* Neutral Filled */\n.root[data-color=\"neutral\"][data-variant=\"filled\"] {\n --btn-bg: var(--color-action-neutral-base);\n --btn-text: var(--color-on-neutral);\n --btn-border: transparent;\n}\n.root[data-color=\"neutral\"][data-variant=\"filled\"]:hover:not([disabled]) {\n --btn-bg: var(--color-action-neutral-hover);\n}\n.root[data-color=\"neutral\"][data-variant=\"filled\"]:active:not([disabled]) {\n --btn-bg: var(--color-action-neutral-active);\n}\n\n/* Neutral Outlined */\n.root[data-color=\"neutral\"][data-variant=\"outlined\"] {\n --btn-bg: transparent;\n --btn-text: var(--color-content-neutral-base);\n --btn-border: var(--color-content-neutral-base);\n}\n.root[data-color=\"neutral\"][data-variant=\"outlined\"]:hover:not([disabled]) {\n --btn-bg: var(--color-surface-secondary);\n}\n\n/* Neutral Ghost */\n.root[data-color=\"neutral\"][data-variant=\"ghost\"] {\n --btn-bg: transparent;\n --btn-text: var(--color-content-neutral-base);\n --btn-border: transparent;\n}\n.root[data-color=\"neutral\"][data-variant=\"ghost\"]:hover:not([disabled]) {\n --btn-bg: var(--color-surface-secondary);\n}\n\n/* Brand Filled */\n.root[data-color=\"brand\"][data-variant=\"filled\"] {\n --btn-bg: var(--color-action-brand-base);\n --btn-text: var(--color-on-brand);\n --btn-border: transparent;\n}\n.root[data-color=\"brand\"][data-variant=\"filled\"]:hover:not([disabled]) {\n --btn-bg: var(--color-action-brand-hover);\n}\n.root[data-color=\"brand\"][data-variant=\"filled\"]:active:not([disabled]) {\n --btn-bg: var(--color-action-brand-active);\n}\n\n/* Brand Outlined */\n.root[data-color=\"brand\"][data-variant=\"outlined\"] {\n --btn-bg: transparent;\n --btn-text: var(--color-content-brand-base);\n --btn-border: var(--color-content-brand-base);\n}\n.root[data-color=\"brand\"][data-variant=\"outlined\"]:hover:not([disabled]) {\n --btn-bg: var(--color-surface-secondary);\n}\n\n/* Brand Ghost */\n.root[data-color=\"brand\"][data-variant=\"ghost\"] {\n --btn-bg: transparent;\n --btn-text: var(--color-content-brand-base);\n --btn-border: transparent;\n}\n.root[data-color=\"brand\"][data-variant=\"ghost\"]:hover:not([disabled]) {\n --btn-bg: var(--color-surface-secondary);\n}\n\n/* Positive Filled */\n.root[data-color=\"positive\"][data-variant=\"filled\"] {\n --btn-bg: var(--color-action-positive-base);\n --btn-text: var(--color-on-positive);\n --btn-border: transparent;\n}\n.root[data-color=\"positive\"][data-variant=\"filled\"]:hover:not([disabled]) {\n --btn-bg: var(--color-action-positive-hover);\n}\n.root[data-color=\"positive\"][data-variant=\"filled\"]:active:not([disabled]) {\n --btn-bg: var(--color-action-positive-active);\n}\n\n/* Positive Outlined */\n.root[data-color=\"positive\"][data-variant=\"outlined\"] {\n --btn-bg: transparent;\n --btn-text: var(--color-content-positive-base);\n --btn-border: var(--color-content-positive-base);\n}\n.root[data-color=\"positive\"][data-variant=\"outlined\"]:hover:not([disabled]) {\n --btn-bg: var(--color-surface-secondary);\n}\n\n/* Positive Ghost */\n.root[data-color=\"positive\"][data-variant=\"ghost\"] {\n --btn-bg: transparent;\n --btn-text: var(--color-content-positive-base);\n --btn-border: transparent;\n}\n.root[data-color=\"positive\"][data-variant=\"ghost\"]:hover:not([disabled]) {\n --btn-bg: var(--color-surface-secondary);\n}\n\n/* Negative Filled */\n.root[data-color=\"negative\"][data-variant=\"filled\"] {\n --btn-bg: var(--color-action-negative-base);\n --btn-text: var(--color-on-negative);\n --btn-border: transparent;\n}\n.root[data-color=\"negative\"][data-variant=\"filled\"]:hover:not([disabled]) {\n --btn-bg: var(--color-action-negative-hover);\n}\n.root[data-color=\"negative\"][data-variant=\"filled\"]:active:not([disabled]) {\n --btn-bg: var(--color-action-negative-active);\n}\n\n/* Negative Outlined */\n.root[data-color=\"negative\"][data-variant=\"outlined\"] {\n --btn-bg: transparent;\n --btn-text: var(--color-content-negative-base);\n --btn-border: var(--color-content-negative-base);\n}\n.root[data-color=\"negative\"][data-variant=\"outlined\"]:hover:not([disabled]) {\n --btn-bg: var(--color-surface-secondary);\n}\n\n/* Negative Ghost */\n.root[data-color=\"negative\"][data-variant=\"ghost\"] {\n --btn-bg: transparent;\n --btn-text: var(--color-content-negative-base);\n --btn-border: transparent;\n}\n.root[data-color=\"negative\"][data-variant=\"ghost\"]:hover:not([disabled]) {\n --btn-bg: var(--color-surface-secondary);\n}\n\n/* Warn Filled */\n.root[data-color=\"warn\"][data-variant=\"filled\"] {\n --btn-bg: var(--color-action-warn-base);\n --btn-text: var(--color-on-warn);\n --btn-border: transparent;\n}\n.root[data-color=\"warn\"][data-variant=\"filled\"]:hover:not([disabled]) {\n --btn-bg: var(--color-action-warn-hover);\n}\n.root[data-color=\"warn\"][data-variant=\"filled\"]:active:not([disabled]) {\n --btn-bg: var(--color-action-warn-active);\n}\n\n/* Warn Outlined */\n.root[data-color=\"warn\"][data-variant=\"outlined\"] {\n --btn-bg: transparent;\n --btn-text: var(--color-content-warn-base);\n --btn-border: var(--color-content-warn-base);\n}\n.root[data-color=\"warn\"][data-variant=\"outlined\"]:hover:not([disabled]) {\n --btn-bg: var(--color-surface-secondary);\n}\n\n/* Warn Ghost */\n.root[data-color=\"warn\"][data-variant=\"ghost\"] {\n --btn-bg: transparent;\n --btn-text: var(--color-content-warn-base);\n --btn-border: transparent;\n}\n.root[data-color=\"warn\"][data-variant=\"ghost\"]:hover:not([disabled]) {\n --btn-bg: var(--color-surface-secondary);\n}\n\n/* Info Filled */\n.root[data-color=\"info\"][data-variant=\"filled\"] {\n --btn-bg: var(--color-action-info-base);\n --btn-text: var(--color-on-info);\n --btn-border: transparent;\n}\n.root[data-color=\"info\"][data-variant=\"filled\"]:hover:not([disabled]) {\n --btn-bg: var(--color-action-info-hover);\n}\n.root[data-color=\"info\"][data-variant=\"filled\"]:active:not([disabled]) {\n --btn-bg: var(--color-action-info-active);\n}\n\n/* Info Outlined */\n.root[data-color=\"info\"][data-variant=\"outlined\"] {\n --btn-bg: transparent;\n --btn-text: var(--color-content-info-base);\n --btn-border: var(--color-content-info-base);\n}\n.root[data-color=\"info\"][data-variant=\"outlined\"]:hover:not([disabled]) {\n --btn-bg: var(--color-surface-secondary);\n}\n\n/* Info Ghost */\n.root[data-color=\"info\"][data-variant=\"ghost\"] {\n --btn-bg: transparent;\n --btn-text: var(--color-content-info-base);\n --btn-border: transparent;\n}\n.root[data-color=\"info\"][data-variant=\"ghost\"]:hover:not([disabled]) {\n --btn-bg: var(--color-surface-secondary);\n}\n"],"mappings":"AAEA,IAAA,EAAU,CAAA,KAAO,cAAA"}
@@ -0,0 +1 @@
1
+ import { BaseButtonProps } from "./base-button.js";
@@ -0,0 +1 @@
1
+ import"./base-button.js";
@@ -0,0 +1,74 @@
1
+ ._9nsqjG_backdrop {
2
+ background-color: var(--color-surface-backdrop-overlay);
3
+ backdrop-filter: blur(.5rem);
4
+ z-index: 1000;
5
+ transition: opacity .2s;
6
+ position: fixed;
7
+ inset: 0;
8
+
9
+ &[data-starting-style], &[data-ending-style] {
10
+ opacity: 0;
11
+ }
12
+ }
13
+
14
+ ._9nsqjG_popup {
15
+ --background: var(--color-surface-base);
16
+ --foreground: var(--color-content-neutral-base);
17
+ --border: var(--color-border-primary);
18
+ z-index: 1010;
19
+ box-sizing: border-box;
20
+ background-color: var(--background);
21
+ width: calc(100vw - 2rem);
22
+ max-width: 28rem;
23
+ color: var(--foreground);
24
+ border: 1px solid var(--border);
25
+ border-radius: var(--spacing-sm);
26
+ padding: var(--spacing-xl);
27
+ gap: var(--spacing-md);
28
+ flex-direction: column;
29
+ transition: opacity .2s cubic-bezier(.22, 1, .36, 1), transform .2s cubic-bezier(.22, 1, .36, 1);
30
+ display: flex;
31
+ position: fixed;
32
+ top: 50%;
33
+ left: 50%;
34
+ transform: translate(-50%, -50%);
35
+
36
+ &[data-starting-style], &[data-ending-style] {
37
+ opacity: 0;
38
+ transform: translate(-50%, -46%);
39
+ }
40
+
41
+ &:focus-visible {
42
+ outline-style: solid;
43
+ outline-width: var(--stroke-focus-ring);
44
+ outline-color: var(--color-action-info-base);
45
+ outline-offset: var(--spacing-xxs);
46
+ }
47
+
48
+ &[data-variant="neutral"] {
49
+ --border: var(--color-action-neutral-muted);
50
+ }
51
+
52
+ &[data-variant="positive"] {
53
+ --border: var(--color-action-positive-muted);
54
+ }
55
+
56
+ &[data-variant="negative"] {
57
+ --border: var(--color-action-negative-muted);
58
+ }
59
+
60
+ &[data-variant="warn"] {
61
+ --border: var(--color-action-warn-muted);
62
+ }
63
+
64
+ &[data-variant="info"] {
65
+ --border: var(--color-action-info-muted);
66
+ }
67
+ }
68
+
69
+ ._9nsqjG_actions {
70
+ justify-content: flex-end;
71
+ gap: var(--spacing-sm);
72
+ margin-top: var(--spacing-xs);
73
+ display: flex;
74
+ }
@@ -0,0 +1,40 @@
1
+ import { AlertDialog } from "@base-ui/react/alert-dialog";
2
+ import { Dialog } from "@base-ui/react/dialog";
3
+
4
+ //#region src/internals/base-dialog/base-dialog.d.ts
5
+ type BaseDialogVariant = "neutral" | "positive" | "negative" | "warn" | "info";
6
+ type BaseDialogOptions = {
7
+ /** The dialog heading text. */title: string; /** Optional body text shown below the title. */
8
+ description?: string; /** Label for the confirm button. Defaults to `"Confirm"`. */
9
+ confirmLabel?: string; /** Label for the cancel button. Defaults to `"Cancel"`. */
10
+ cancelLabel?: string; /** Visual variant controlling color and tone. Defaults to `"neutral"`. */
11
+ variant?: BaseDialogVariant; /** Called when the user clicks the confirm button. */
12
+ onConfirm?: () => void; /** Called when the user clicks the cancel button or dismisses the dialog. */
13
+ onCancel?: () => void;
14
+ };
15
+ type BaseDialogClassNames = {
16
+ backdrop?: string;
17
+ popup?: string;
18
+ actions?: string;
19
+ };
20
+ type BaseDialogProps = BaseDialogOptions & {
21
+ /** Whether the dialog is open. */open: boolean; /** Called when the dialog requests to close (backdrop click, Escape key). */
22
+ onOpenChange: (open: boolean) => void;
23
+ /**
24
+ * The DOM element to portal the dialog into.
25
+ * Defaults to `document.body` when not provided.
26
+ */
27
+ container?: HTMLElement | null;
28
+ /**
29
+ * Render Mode
30
+ */
31
+ as: typeof AlertDialog | typeof Dialog;
32
+ /**
33
+ * Optional className overrides for internal slots.
34
+ * Keys correspond to existing CSS module classes in `styles["..."]`.
35
+ */
36
+ classNames?: BaseDialogClassNames;
37
+ };
38
+ //#endregion
39
+ export { BaseDialogClassNames, BaseDialogOptions, BaseDialogProps, BaseDialogVariant };
40
+ //# sourceMappingURL=base-dialog.d.ts.map
@@ -0,0 +1,2 @@
1
+ import{Button as e}from"../../atoms/button/button.js";import"../../atoms/button/index.js";import{Text as t}from"../../atoms/text/text.js";import"../../atoms/text/index.js";import{usePortalConfig as n}from"../../helpers/portal/context/hooks.js";import"../../helpers/portal/index.js";import r from"./base-dialog.module.js";import"@base-ui/react/alert-dialog";import"@base-ui/react/dialog";import i from"clsx";import{useCallback as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";const c=c=>{let{open:l,onOpenChange:u,title:d,description:f,confirmLabel:p=`Confirm`,cancelLabel:m=`Cancel`,variant:h=`neutral`,onConfirm:g,as:_,onCancel:v,classNames:y}=c,b=a(()=>{g?.(),u(!1)},[g,u]),x=a(()=>{v?.(),u(!1)},[v,u]),{resolveContainer:S}=n(),C=S(),w=_;return o(w.Root,{open:l,onOpenChange:u,children:s(w.Portal,{container:C,children:[o(w.Backdrop,{"data-slot":`base-dialog-backdrop`,className:i(r.backdrop,y?.backdrop)}),s(w.Popup,{"data-variant":h,"data-slot":`base-dialog-popup`,className:i(r.popup,y?.popup),children:[o(w.Title,{render:o(t,{variant:`h5`,children:d})}),f&&o(w.Description,{render:o(t,{variant:`body1`,children:f})}),s(`div`,{"data-slot":`base-dialog-actions`,className:i(r.actions,y?.actions),children:[o(w.Close,{render:o(e,{variant:`ghost`,color:`neutral`,text:m}),onClick:x}),o(w.Close,{render:o(e,{variant:`filled`,color:h,text:p}),onClick:b})]})]})]})})};export{c as BaseDialog};
2
+ //# sourceMappingURL=base-dialog.js.map