@stackframe/stack 2.4.1 → 2.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/dist/components/magic-link-sign-in.js.map +1 -1
  2. package/dist/components/oauth-button.js +0 -2
  3. package/dist/components/oauth-button.js.map +1 -1
  4. package/dist/components/oauth-group.d.mts +3 -1
  5. package/dist/components/oauth-group.d.ts +3 -1
  6. package/dist/components/oauth-group.js +3 -2
  7. package/dist/components/oauth-group.js.map +1 -1
  8. package/dist/components/password-field.js +1 -1
  9. package/dist/components/password-field.js.map +1 -1
  10. package/dist/components/user-button.js +3 -2
  11. package/dist/components/user-button.js.map +1 -1
  12. package/dist/components-core/avatar.js +1 -1
  13. package/dist/components-core/avatar.js.map +1 -1
  14. package/dist/components-core/button.js +3 -3
  15. package/dist/components-core/button.js.map +1 -1
  16. package/dist/components-core/card.js +1 -1
  17. package/dist/components-core/card.js.map +1 -1
  18. package/dist/components-core/dropdown.js +6 -3
  19. package/dist/components-core/dropdown.js.map +1 -1
  20. package/dist/components-core/index.d.mts +4 -4
  21. package/dist/components-core/index.d.ts +4 -4
  22. package/dist/components-core/input.js +1 -1
  23. package/dist/components-core/input.js.map +1 -1
  24. package/dist/components-core/label.js +1 -1
  25. package/dist/components-core/label.js.map +1 -1
  26. package/dist/components-core/link.js +1 -1
  27. package/dist/components-core/link.js.map +1 -1
  28. package/dist/components-core/loading-indicator.js +1 -1
  29. package/dist/components-core/loading-indicator.js.map +1 -1
  30. package/dist/components-core/popover.js +1 -1
  31. package/dist/components-core/popover.js.map +1 -1
  32. package/dist/components-core/separator.js +1 -1
  33. package/dist/components-core/separator.js.map +1 -1
  34. package/dist/components-core/skeleton.js +1 -1
  35. package/dist/components-core/skeleton.js.map +1 -1
  36. package/dist/components-core/tabs.js +5 -4
  37. package/dist/components-core/tabs.js.map +1 -1
  38. package/dist/components-core/text.js +1 -1
  39. package/dist/components-core/text.js.map +1 -1
  40. package/dist/components-page/auth-page.d.mts +3 -1
  41. package/dist/components-page/auth-page.d.ts +3 -1
  42. package/dist/components-page/auth-page.js +5 -4
  43. package/dist/components-page/auth-page.js.map +1 -1
  44. package/dist/esm/components/magic-link-sign-in.js.map +1 -1
  45. package/dist/esm/components/oauth-button.js +0 -2
  46. package/dist/esm/components/oauth-button.js.map +1 -1
  47. package/dist/esm/components/oauth-group.js +3 -2
  48. package/dist/esm/components/oauth-group.js.map +1 -1
  49. package/dist/esm/components/password-field.js +1 -1
  50. package/dist/esm/components/password-field.js.map +1 -1
  51. package/dist/esm/components/user-button.js +3 -2
  52. package/dist/esm/components/user-button.js.map +1 -1
  53. package/dist/esm/components-core/avatar.js +1 -1
  54. package/dist/esm/components-core/avatar.js.map +1 -1
  55. package/dist/esm/components-core/button.js +3 -3
  56. package/dist/esm/components-core/button.js.map +1 -1
  57. package/dist/esm/components-core/card.js +1 -1
  58. package/dist/esm/components-core/card.js.map +1 -1
  59. package/dist/esm/components-core/dropdown.js +6 -3
  60. package/dist/esm/components-core/dropdown.js.map +1 -1
  61. package/dist/esm/components-core/input.js +1 -1
  62. package/dist/esm/components-core/input.js.map +1 -1
  63. package/dist/esm/components-core/label.js +1 -1
  64. package/dist/esm/components-core/label.js.map +1 -1
  65. package/dist/esm/components-core/link.js +1 -1
  66. package/dist/esm/components-core/link.js.map +1 -1
  67. package/dist/esm/components-core/loading-indicator.js +1 -1
  68. package/dist/esm/components-core/loading-indicator.js.map +1 -1
  69. package/dist/esm/components-core/popover.js +1 -1
  70. package/dist/esm/components-core/popover.js.map +1 -1
  71. package/dist/esm/components-core/separator.js +1 -1
  72. package/dist/esm/components-core/separator.js.map +1 -1
  73. package/dist/esm/components-core/skeleton.js +1 -1
  74. package/dist/esm/components-core/skeleton.js.map +1 -1
  75. package/dist/esm/components-core/tabs.js +6 -5
  76. package/dist/esm/components-core/tabs.js.map +1 -1
  77. package/dist/esm/components-core/text.js +1 -1
  78. package/dist/esm/components-core/text.js.map +1 -1
  79. package/dist/esm/components-page/auth-page.js +5 -4
  80. package/dist/esm/components-page/auth-page.js.map +1 -1
  81. package/dist/esm/index.js +2 -0
  82. package/dist/esm/index.js.map +1 -1
  83. package/dist/esm/lib/stack-app.js +2 -2
  84. package/dist/esm/lib/stack-app.js.map +1 -1
  85. package/dist/esm/utils/browser-script.js +14 -6
  86. package/dist/esm/utils/browser-script.js.map +1 -1
  87. package/dist/index.d.mts +1 -0
  88. package/dist/index.d.ts +1 -0
  89. package/dist/index.js +3 -0
  90. package/dist/index.js.map +1 -1
  91. package/dist/lib/stack-app.d.mts +3 -1
  92. package/dist/lib/stack-app.d.ts +3 -1
  93. package/dist/lib/stack-app.js +2 -2
  94. package/dist/lib/stack-app.js.map +1 -1
  95. package/dist/providers/component-provider.d.mts +6 -6
  96. package/dist/providers/component-provider.d.ts +6 -6
  97. package/dist/utils/browser-script.js +14 -6
  98. package/dist/utils/browser-script.js.map +1 -1
  99. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components-core/separator.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport * as SeparatorPrimitive from '@radix-ui/react-separator';\nimport styled from 'styled-components';\nimport { useDesign } from '..';\nimport { ColorPalette } from '../providers/design-provider';\n\nconst StyledSeparator = styled(SeparatorPrimitive.Root)<{ \n $orientation: string,\n $color: ColorPalette,\n}>`\n flex-shrink: 0;\n ${(props) =>\n props.$orientation === 'horizontal'\n ? 'height: 1px; width: 100%;'\n : 'height: 100%; width: 1px;'}\n \n background-color: ${props => props.$color.light.neutralColor};\n\n html[data-theme='dark'] & {\n background-color: ${props => props.$color.dark.neutralColor};\n }\n`;\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(({ orientation = 'horizontal', decorative = true, ...props }, ref) => {\n const { colors } = useDesign();\n\n return <StyledSeparator\n ref={ref}\n decorative={decorative}\n $orientation={orientation}\n $color={colors}\n {...props}\n />;\n});\n\nSeparator.displayName = 'Separator';\n\nexport { Separator };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAkB;AAClB,yBAAoC;AACpC,+BAAmB;AACnB,eAA0B;AA0BjB;AAvBT,IAAM,sBAAkB,yBAAAA,SAA0B,uBAAI;AAAA;AAAA,IAKlD,CAAC,UACD,MAAM,iBAAiB,eACnB,8BACA,2BAA2B;AAAA;AAAA,sBAEb,WAAS,MAAM,OAAO,MAAM,YAAY;AAAA;AAAA;AAAA,wBAGtC,WAAS,MAAM,OAAO,KAAK,YAAY;AAAA;AAAA;AAI/D,IAAM,YAAY,aAAAC,QAAM,WAGtB,CAAC,EAAE,cAAc,cAAc,aAAa,MAAM,GAAG,MAAM,GAAG,QAAQ;AACtE,QAAM,EAAE,OAAO,QAAI,oBAAU;AAE7B,SAAO;AAAA,IAAC;AAAA;AAAA,MACN;AAAA,MACA;AAAA,MACA,cAAc;AAAA,MACd,QAAQ;AAAA,MACP,GAAG;AAAA;AAAA,EACN;AACF,CAAC;AAED,UAAU,cAAc;","names":["styled","React"]}
1
+ {"version":3,"sources":["../../src/components-core/separator.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport * as SeparatorPrimitive from '@radix-ui/react-separator';\nimport styled from 'styled-components';\nimport { useDesign } from '..';\nimport { ColorPalette } from '../providers/design-provider';\n\nconst StyledSeparator = styled(SeparatorPrimitive.Root)<{ \n $orientation: string,\n $color: ColorPalette,\n}>`\n flex-shrink: 0;\n ${(props) =>\n props.$orientation === 'horizontal'\n ? 'height: 1px; width: 100%;'\n : 'height: 100%; width: 1px;'}\n \n background-color: ${props => props.$color.light.neutralColor};\n\n html[data-stack-theme='dark'] & {\n background-color: ${props => props.$color.dark.neutralColor};\n }\n`;\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(({ orientation = 'horizontal', decorative = true, ...props }, ref) => {\n const { colors } = useDesign();\n\n return <StyledSeparator\n ref={ref}\n decorative={decorative}\n $orientation={orientation}\n $color={colors}\n {...props}\n />;\n});\n\nSeparator.displayName = 'Separator';\n\nexport { Separator };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAkB;AAClB,yBAAoC;AACpC,+BAAmB;AACnB,eAA0B;AA0BjB;AAvBT,IAAM,sBAAkB,yBAAAA,SAA0B,uBAAI;AAAA;AAAA,IAKlD,CAAC,UACD,MAAM,iBAAiB,eACnB,8BACA,2BAA2B;AAAA;AAAA,sBAEb,WAAS,MAAM,OAAO,MAAM,YAAY;AAAA;AAAA;AAAA,wBAGtC,WAAS,MAAM,OAAO,KAAK,YAAY;AAAA;AAAA;AAI/D,IAAM,YAAY,aAAAC,QAAM,WAGtB,CAAC,EAAE,cAAc,cAAc,aAAa,MAAM,GAAG,MAAM,GAAG,QAAQ;AACtE,QAAM,EAAE,OAAO,QAAI,oBAAU;AAE7B,SAAO;AAAA,IAAC;AAAA;AAAA,MACN;AAAA,MACA;AAAA,MACA,cAAc;AAAA,MACd,QAAQ;AAAA,MACP,GAAG;AAAA;AAAA,EACN;AACF,CAAC;AAED,UAAU,cAAc;","names":["styled","React"]}
@@ -63,7 +63,7 @@ var Primitive = (0, import_styled_components.default)("span")`
63
63
  animation: ${animationLight} 1s infinite alternate-reverse !important;
64
64
  }
65
65
 
66
- html[data-theme='dark'] &[data-stack-state="activated"] {
66
+ html[data-stack-theme='dark'] &[data-stack-state="activated"] {
67
67
  animation: ${animationDark} 1s infinite alternate-reverse !important;
68
68
  }
69
69
  `;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components-core/skeleton.tsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport styled, { keyframes } from 'styled-components';\n\nconst getFilterString = (brightness1: number, brightness2: number) => {\n return `\n 0% {\n filter: grayscale(1) contrast(0) brightness(0) invert(1) brightness(${brightness1});\n }\n 100% {\n filter: grayscale(1) contrast(0) brightness(0) invert(1) brightness(${brightness2});\n }\n `;\n};\n\nconst animationLight = keyframes`${getFilterString(0.8, 0.9)}`;\nconst animationDark = keyframes`${getFilterString(0.2, 0.1)}`;\n\nconst Primitive = styled(\"span\")`\n &[data-stack-state=\"activated\"], &[data-stack-state=\"activated\"] * {\n pointer-events: none !important;\n -webkit-user-select: none !important;\n -moz-user-select: none !important;\n user-select: none !important;\n cursor: default !important;\n }\n\n &[data-stack-state=\"activated\"] {\n animation: ${animationLight} 1s infinite alternate-reverse !important;\n }\n\n html[data-theme='dark'] &[data-stack-state=\"activated\"] {\n animation: ${animationDark} 1s infinite alternate-reverse !important;\n }\n`;\n\nconst Skeleton = React.forwardRef<\n React.ElementRef<\"span\">,\n React.ComponentPropsWithoutRef<\"span\"> & { deactivated?: boolean }\n>(\n (props, ref) => {\n return <Primitive\n ref={ref}\n data-stack-state={props.deactivated ? \"deactivated\" : \"activated\"}\n {...props}\n />;\n }\n);\nSkeleton.displayName = \"Skeleton\";\n\nexport { Skeleton };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAkB;AAClB,+BAAkC;AAuCvB;AArCX,IAAM,kBAAkB,CAAC,aAAqB,gBAAwB;AACpE,SAAO;AAAA;AAAA,4EAEmE,WAAW;AAAA;AAAA;AAAA,4EAGX,WAAW;AAAA;AAAA;AAGvF;AAEA,IAAM,iBAAiB,qCAAY,gBAAgB,KAAK,GAAG,CAAC;AAC5D,IAAM,gBAAgB,qCAAY,gBAAgB,KAAK,GAAG,CAAC;AAE3D,IAAM,gBAAY,yBAAAA,SAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAUd,cAAc;AAAA;AAAA;AAAA;AAAA,iBAId,aAAa;AAAA;AAAA;AAI9B,IAAM,WAAW,aAAAC,QAAM;AAAA,EAIrB,CAAC,OAAO,QAAQ;AACd,WAAO;AAAA,MAAC;AAAA;AAAA,QACN;AAAA,QACA,oBAAkB,MAAM,cAAc,gBAAgB;AAAA,QACrD,GAAG;AAAA;AAAA,IACN;AAAA,EACF;AACF;AACA,SAAS,cAAc;","names":["styled","React"]}
1
+ {"version":3,"sources":["../../src/components-core/skeleton.tsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport styled, { keyframes } from 'styled-components';\n\nconst getFilterString = (brightness1: number, brightness2: number) => {\n return `\n 0% {\n filter: grayscale(1) contrast(0) brightness(0) invert(1) brightness(${brightness1});\n }\n 100% {\n filter: grayscale(1) contrast(0) brightness(0) invert(1) brightness(${brightness2});\n }\n `;\n};\n\nconst animationLight = keyframes`${getFilterString(0.8, 0.9)}`;\nconst animationDark = keyframes`${getFilterString(0.2, 0.1)}`;\n\nconst Primitive = styled(\"span\")`\n &[data-stack-state=\"activated\"], &[data-stack-state=\"activated\"] * {\n pointer-events: none !important;\n -webkit-user-select: none !important;\n -moz-user-select: none !important;\n user-select: none !important;\n cursor: default !important;\n }\n\n &[data-stack-state=\"activated\"] {\n animation: ${animationLight} 1s infinite alternate-reverse !important;\n }\n\n html[data-stack-theme='dark'] &[data-stack-state=\"activated\"] {\n animation: ${animationDark} 1s infinite alternate-reverse !important;\n }\n`;\n\nconst Skeleton = React.forwardRef<\n React.ElementRef<\"span\">,\n React.ComponentPropsWithoutRef<\"span\"> & { deactivated?: boolean }\n>(\n (props, ref) => {\n return <Primitive\n ref={ref}\n data-stack-state={props.deactivated ? \"deactivated\" : \"activated\"}\n {...props}\n />;\n }\n);\nSkeleton.displayName = \"Skeleton\";\n\nexport { Skeleton };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAkB;AAClB,+BAAkC;AAuCvB;AArCX,IAAM,kBAAkB,CAAC,aAAqB,gBAAwB;AACpE,SAAO;AAAA;AAAA,4EAEmE,WAAW;AAAA;AAAA;AAAA,4EAGX,WAAW;AAAA;AAAA;AAGvF;AAEA,IAAM,iBAAiB,qCAAY,gBAAgB,KAAK,GAAG,CAAC;AAC5D,IAAM,gBAAgB,qCAAY,gBAAgB,KAAK,GAAG,CAAC;AAE3D,IAAM,gBAAY,yBAAAA,SAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAUd,cAAc;AAAA;AAAA;AAAA;AAAA,iBAId,aAAa;AAAA;AAAA;AAI9B,IAAM,WAAW,aAAAC,QAAM;AAAA,EAIrB,CAAC,OAAO,QAAQ;AACd,WAAO;AAAA,MAAC;AAAA;AAAA,QACN;AAAA,QACA,oBAAkB,MAAM,cAAc,gBAAgB;AAAA,QACrD,GAAG;AAAA;AAAA,IACN;AAAA,EACF;AACF;AACA,SAAS,cAAc;","names":["styled","React"]}
@@ -52,7 +52,7 @@ var StyledTabsList = (0, import_styled_components.default)(TabsPrimitive.List)`
52
52
 
53
53
  background-color: rgb(244, 244, 245);
54
54
 
55
- html[data-theme='dark'] & {
55
+ html[data-stack-theme='dark'] & {
56
56
  background-color: rgb(39, 39, 42);
57
57
  }
58
58
  `;
@@ -86,20 +86,21 @@ var StyledTabsTrigger = (0, import_styled_components.default)(TabsPrimitive.Trig
86
86
  background-color: ${({ $colors }) => $colors.light.backgroundColor};
87
87
  }
88
88
 
89
- html[data-theme='dark'] & {
89
+ html[data-stack-theme='dark'] & {
90
90
  &[data-state='active'] {
91
91
  background-color: ${({ $colors }) => $colors.dark.backgroundColor};
92
92
  }
93
93
  }
94
94
  `;
95
- var TabsTrigger = React.forwardRef((props, ref) => {
95
+ var TabsTrigger = React.forwardRef(({ children, ...props }, ref) => {
96
96
  const { colors } = (0, import__.useDesign)();
97
97
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
98
98
  StyledTabsTrigger,
99
99
  {
100
100
  $colors: colors,
101
101
  ...props,
102
- ref
102
+ ref,
103
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import__.Text, { children })
103
104
  }
104
105
  );
105
106
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components-core/tabs.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport styled from 'styled-components';\nimport { useDesign } from '..';\nimport { ColorPalette } from '../providers/design-provider';\n\nconst Tabs = TabsPrimitive.Root;\n\nconst StyledTabsList = styled(TabsPrimitive.List)`\n display: flex;\n height: 2.5rem\n align-items: center;\n justify-content: center;\n border-radius: 0.375rem;\n padding: 0.25rem;\n\n background-color: rgb(244, 244, 245);\n\n html[data-theme='dark'] & {\n background-color: rgb(39, 39, 42);\n }\n`;\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentProps<typeof TabsPrimitive.List>\n>((props, ref) => {\n return <StyledTabsList\n {...props} \n ref={ref} \n />;\n});\n\nconst StyledTabsTrigger = styled(TabsPrimitive.Trigger)<{\n $colors: ColorPalette,\n}>`\n all: unset;\n display: flex;\n flex-grow: 1;\n align-items: center;\n justify-content: center;\n white-space: nowrap;\n border-radius: 0.25rem;\n padding: 0.25rem 0.5rem;\n transition: all;\n outline: none;\n\n &:disabled {\n pointer-events: none;\n opacity: 0.5;\n }\n\n &[data-state='active'] {\n background-color: ${({ $colors }) => $colors.light.backgroundColor};\n }\n\n html[data-theme='dark'] & {\n &[data-state='active'] {\n background-color: ${({ $colors }) => $colors.dark.backgroundColor};\n }\n }\n`;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentProps<typeof TabsPrimitive.Trigger>\n>((props, ref) => {\n const { colors } = useDesign();\n return <StyledTabsTrigger \n $colors={colors}\n {...props} \n ref={ref} \n />;\n});\n\nconst StyledTabsContent = styled(TabsPrimitive.Content)`\n margin-top: 1.5rem;\n`;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentProps<typeof TabsPrimitive.Content>\n>((props, ref) => {\n return <StyledTabsContent {...props} ref={ref} />;\n});\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAuB;AACvB,oBAA+B;AAC/B,+BAAmB;AACnB,eAA0B;AAwBjB;AArBT,IAAM,OAAqB;AAE3B,IAAM,qBAAiB,yBAAAA,SAAqB,kBAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAehD,IAAM,WAAiB,iBAGrB,CAAC,OAAO,QAAQ;AAChB,SAAO;AAAA,IAAC;AAAA;AAAA,MACL,GAAG;AAAA,MACJ;AAAA;AAAA,EACF;AACF,CAAC;AAED,IAAM,wBAAoB,yBAAAA,SAAqB,qBAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAoB9B,CAAC,EAAE,QAAQ,MAAM,QAAQ,MAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA,0BAK5C,CAAC,EAAE,QAAQ,MAAM,QAAQ,KAAK,eAAe;AAAA;AAAA;AAAA;AAKvE,IAAM,cAAoB,iBAGxB,CAAC,OAAO,QAAQ;AAChB,QAAM,EAAE,OAAO,QAAI,oBAAU;AAC7B,SAAO;AAAA,IAAC;AAAA;AAAA,MACN,SAAS;AAAA,MACR,GAAG;AAAA,MACJ;AAAA;AAAA,EACF;AACF,CAAC;AAED,IAAM,wBAAoB,yBAAAA,SAAqB,qBAAO;AAAA;AAAA;AAItD,IAAM,cAAoB,iBAGxB,CAAC,OAAO,QAAQ;AAChB,SAAO,4CAAC,qBAAmB,GAAG,OAAO,KAAU;AACjD,CAAC;","names":["styled"]}
1
+ {"version":3,"sources":["../../src/components-core/tabs.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport styled from 'styled-components';\nimport { Text, useDesign } from '..';\nimport { ColorPalette } from '../providers/design-provider';\n\nconst Tabs = TabsPrimitive.Root;\n\nconst StyledTabsList = styled(TabsPrimitive.List)`\n display: flex;\n height: 2.5rem\n align-items: center;\n justify-content: center;\n border-radius: 0.375rem;\n padding: 0.25rem;\n\n background-color: rgb(244, 244, 245);\n\n html[data-stack-theme='dark'] & {\n background-color: rgb(39, 39, 42);\n }\n`;\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentProps<typeof TabsPrimitive.List>\n>((props, ref) => {\n return <StyledTabsList\n {...props} \n ref={ref} \n />;\n});\n\nconst StyledTabsTrigger = styled(TabsPrimitive.Trigger)<{\n $colors: ColorPalette,\n}>`\n all: unset;\n display: flex;\n flex-grow: 1;\n align-items: center;\n justify-content: center;\n white-space: nowrap;\n border-radius: 0.25rem;\n padding: 0.25rem 0.5rem;\n transition: all;\n outline: none;\n\n &:disabled {\n pointer-events: none;\n opacity: 0.5;\n }\n\n &[data-state='active'] {\n background-color: ${({ $colors }) => $colors.light.backgroundColor};\n }\n\n html[data-stack-theme='dark'] & {\n &[data-state='active'] {\n background-color: ${({ $colors }) => $colors.dark.backgroundColor};\n }\n }\n`;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentProps<typeof TabsPrimitive.Trigger>\n>(({children, ...props}, ref) => {\n const { colors } = useDesign();\n return <StyledTabsTrigger \n $colors={colors}\n {...props} \n ref={ref} \n >\n <Text>{children}</Text>\n </StyledTabsTrigger>;\n});\n\nconst StyledTabsContent = styled(TabsPrimitive.Content)`\n margin-top: 1.5rem;\n`;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentProps<typeof TabsPrimitive.Content>\n>((props, ref) => {\n return <StyledTabsContent {...props} ref={ref} />;\n});\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAuB;AACvB,oBAA+B;AAC/B,+BAAmB;AACnB,eAAgC;AAwBvB;AArBT,IAAM,OAAqB;AAE3B,IAAM,qBAAiB,yBAAAA,SAAqB,kBAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAehD,IAAM,WAAiB,iBAGrB,CAAC,OAAO,QAAQ;AAChB,SAAO;AAAA,IAAC;AAAA;AAAA,MACL,GAAG;AAAA,MACJ;AAAA;AAAA,EACF;AACF,CAAC;AAED,IAAM,wBAAoB,yBAAAA,SAAqB,qBAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAoB9B,CAAC,EAAE,QAAQ,MAAM,QAAQ,MAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA,0BAK5C,CAAC,EAAE,QAAQ,MAAM,QAAQ,KAAK,eAAe;AAAA;AAAA;AAAA;AAKvE,IAAM,cAAoB,iBAGxB,CAAC,EAAC,UAAU,GAAG,MAAK,GAAG,QAAQ;AAC/B,QAAM,EAAE,OAAO,QAAI,oBAAU;AAC7B,SAAO;AAAA,IAAC;AAAA;AAAA,MACN,SAAS;AAAA,MACR,GAAG;AAAA,MACJ;AAAA,MAEA,sDAAC,iBAAM,UAAS;AAAA;AAAA,EAClB;AACF,CAAC;AAED,IAAM,wBAAoB,yBAAAA,SAAqB,qBAAO;AAAA;AAAA;AAItD,IAAM,cAAoB,iBAGxB,CAAC,OAAO,QAAQ;AAChB,SAAO,4CAAC,qBAAmB,GAAG,OAAO,KAAU;AACjD,CAAC;","names":["styled"]}
@@ -52,7 +52,7 @@ var StyledComponents = (0, import_objects.typedFromEntries)(components.map((comp
52
52
  padding: 0;
53
53
  color: ${(props) => props.$textColor.light};
54
54
 
55
- html[data-theme='dark'] & {
55
+ html[data-stack-theme='dark'] & {
56
56
  color: ${(props) => props.$textColor.dark};
57
57
  }
58
58
  `
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components-core/text.tsx"],"sourcesContent":["'use client';\n\nimport React from \"react\";\nimport { createElement } from \"react\";\nimport { FONT_FAMILY, FONT_SIZES, LINE_HEIGHTS, PRIMARY_FONT_COLORS, SECONDARY_FONT_COLORS } from \"../utils/constants\";\nimport styled from \"styled-components\";\nimport { typedFromEntries } from \"@stackframe/stack-shared/dist/utils/objects\";\n\nconst components = ['p', 'h6', 'h5', 'h4', 'h3', 'h2', 'h1'] as const;\nconst StyledComponents = typedFromEntries(components.map((component) => {\n return [\n component,\n styled(component)<{\n $size: 'xs' | 'sm' | 'md' | 'lg' | 'xl',\n $textColor: { light: string, dark: string },\n }>`\n font-family: ${FONT_FAMILY};\n font-size: ${props => FONT_SIZES[props.$size]};\n line-height: ${props => LINE_HEIGHTS[props.$size]};\n margin: 0;\n padding: 0;\n color: ${props => props.$textColor.light};\n \n html[data-theme='dark'] & {\n color: ${props => props.$textColor.dark};\n }\n `\n ] as const;\n}));\n\n\ntype TextProps = {\n variant?: 'primary' | 'secondary' | 'warning' | 'success',\n as?: 'p' | 'h6'| 'h5' | 'h4' | 'h3' | 'h2' | 'h1',\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl',\n} & Omit<React.HTMLProps<HTMLParagraphElement>, 'size'>\n\nconst Text = React.forwardRef<HTMLParagraphElement, TextProps>(({\n variant='primary',\n size='md',\n as='p',\n ...props\n} : TextProps, ref) => {\n let textColor: { light: string, dark: string };\n switch (variant) {\n case 'primary': {\n textColor = PRIMARY_FONT_COLORS;\n break;\n }\n case 'secondary': {\n textColor = SECONDARY_FONT_COLORS;\n break;\n }\n case 'warning': {\n textColor = { light: '#b33b1d', dark: '#ff7b5c' };\n break;\n }\n case 'success': {\n textColor = { light: '#3da63d', dark: '#3da63d' };\n break;\n }\n }\n return createElement(StyledComponents[as], {\n $size: size,\n $textColor: textColor,\n ...props,\n ref,\n });\n});\n\nText.displayName = 'Text';\n\nexport { Text };"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAkB;AAClB,IAAAA,gBAA8B;AAC9B,uBAAkG;AAClG,+BAAmB;AACnB,qBAAiC;AAEjC,IAAM,aAAa,CAAC,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAC3D,IAAM,uBAAmB,iCAAiB,WAAW,IAAI,CAAC,cAAc;AACtE,SAAO;AAAA,IACL;AAAA,QACA,yBAAAC,SAAO,SAAS;AAAA,qBAIC,4BAAW;AAAA,mBACb,WAAS,4BAAW,MAAM,KAAK,CAAC;AAAA,qBAC9B,WAAS,8BAAa,MAAM,KAAK,CAAC;AAAA;AAAA;AAAA,eAGxC,WAAS,MAAM,WAAW,KAAK;AAAA;AAAA;AAAA,iBAG7B,WAAS,MAAM,WAAW,IAAI;AAAA;AAAA;AAAA,EAG7C;AACF,CAAC,CAAC;AASF,IAAM,OAAO,aAAAC,QAAM,WAA4C,CAAC;AAAA,EAC9D,UAAQ;AAAA,EACR,OAAK;AAAA,EACL,KAAG;AAAA,EACH,GAAG;AACL,GAAe,QAAQ;AACrB,MAAI;AACJ,UAAQ,SAAS;AAAA,IACf,KAAK,WAAW;AACd,kBAAY;AACZ;AAAA,IACF;AAAA,IACA,KAAK,aAAa;AAChB,kBAAY;AACZ;AAAA,IACF;AAAA,IACA,KAAK,WAAW;AACd,kBAAY,EAAE,OAAO,WAAW,MAAM,UAAU;AAChD;AAAA,IACF;AAAA,IACA,KAAK,WAAW;AACd,kBAAY,EAAE,OAAO,WAAW,MAAM,UAAU;AAChD;AAAA,IACF;AAAA,EACF;AACA,aAAO,6BAAc,iBAAiB,EAAE,GAAG;AAAA,IACzC,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,GAAG;AAAA,IACH;AAAA,EACF,CAAC;AACH,CAAC;AAED,KAAK,cAAc;","names":["import_react","styled","React"]}
1
+ {"version":3,"sources":["../../src/components-core/text.tsx"],"sourcesContent":["'use client';\n\nimport React from \"react\";\nimport { createElement } from \"react\";\nimport { FONT_FAMILY, FONT_SIZES, LINE_HEIGHTS, PRIMARY_FONT_COLORS, SECONDARY_FONT_COLORS } from \"../utils/constants\";\nimport styled from \"styled-components\";\nimport { typedFromEntries } from \"@stackframe/stack-shared/dist/utils/objects\";\n\nconst components = ['p', 'h6', 'h5', 'h4', 'h3', 'h2', 'h1'] as const;\nconst StyledComponents = typedFromEntries(components.map((component) => {\n return [\n component,\n styled(component)<{\n $size: 'xs' | 'sm' | 'md' | 'lg' | 'xl',\n $textColor: { light: string, dark: string },\n }>`\n font-family: ${FONT_FAMILY};\n font-size: ${props => FONT_SIZES[props.$size]};\n line-height: ${props => LINE_HEIGHTS[props.$size]};\n margin: 0;\n padding: 0;\n color: ${props => props.$textColor.light};\n \n html[data-stack-theme='dark'] & {\n color: ${props => props.$textColor.dark};\n }\n `\n ] as const;\n}));\n\n\ntype TextProps = {\n variant?: 'primary' | 'secondary' | 'warning' | 'success',\n as?: 'p' | 'h6'| 'h5' | 'h4' | 'h3' | 'h2' | 'h1',\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl',\n} & Omit<React.HTMLProps<HTMLParagraphElement>, 'size'>\n\nconst Text = React.forwardRef<HTMLParagraphElement, TextProps>(({\n variant='primary',\n size='md',\n as='p',\n ...props\n} : TextProps, ref) => {\n let textColor: { light: string, dark: string };\n switch (variant) {\n case 'primary': {\n textColor = PRIMARY_FONT_COLORS;\n break;\n }\n case 'secondary': {\n textColor = SECONDARY_FONT_COLORS;\n break;\n }\n case 'warning': {\n textColor = { light: '#b33b1d', dark: '#ff7b5c' };\n break;\n }\n case 'success': {\n textColor = { light: '#3da63d', dark: '#3da63d' };\n break;\n }\n }\n return createElement(StyledComponents[as], {\n $size: size,\n $textColor: textColor,\n ...props,\n ref,\n });\n});\n\nText.displayName = 'Text';\n\nexport { Text };"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAkB;AAClB,IAAAA,gBAA8B;AAC9B,uBAAkG;AAClG,+BAAmB;AACnB,qBAAiC;AAEjC,IAAM,aAAa,CAAC,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAC3D,IAAM,uBAAmB,iCAAiB,WAAW,IAAI,CAAC,cAAc;AACtE,SAAO;AAAA,IACL;AAAA,QACA,yBAAAC,SAAO,SAAS;AAAA,qBAIC,4BAAW;AAAA,mBACb,WAAS,4BAAW,MAAM,KAAK,CAAC;AAAA,qBAC9B,WAAS,8BAAa,MAAM,KAAK,CAAC;AAAA;AAAA;AAAA,eAGxC,WAAS,MAAM,WAAW,KAAK;AAAA;AAAA;AAAA,iBAG7B,WAAS,MAAM,WAAW,IAAI;AAAA;AAAA;AAAA,EAG7C;AACF,CAAC,CAAC;AASF,IAAM,OAAO,aAAAC,QAAM,WAA4C,CAAC;AAAA,EAC9D,UAAQ;AAAA,EACR,OAAK;AAAA,EACL,KAAG;AAAA,EACH,GAAG;AACL,GAAe,QAAQ;AACrB,MAAI;AACJ,UAAQ,SAAS;AAAA,IACf,KAAK,WAAW;AACd,kBAAY;AACZ;AAAA,IACF;AAAA,IACA,KAAK,aAAa;AAChB,kBAAY;AACZ;AAAA,IACF;AAAA,IACA,KAAK,WAAW;AACd,kBAAY,EAAE,OAAO,WAAW,MAAM,UAAU;AAChD;AAAA,IACF;AAAA,IACA,KAAK,WAAW;AACd,kBAAY,EAAE,OAAO,WAAW,MAAM,UAAU;AAChD;AAAA,IACF;AAAA,EACF;AACA,aAAO,6BAAc,iBAAiB,EAAE,GAAG;AAAA,IACzC,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,GAAG;AAAA,IACH;AAAA,EACF,CAAC;AACH,CAAC;AAED,KAAK,cAAc;","names":["import_react","styled","React"]}
@@ -1,8 +1,10 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ClientProjectJson } from '@stackframe/stack-shared';
2
3
 
3
- declare function AuthPage({ fullPage, type }: {
4
+ declare function AuthPage({ fullPage, type, mockProject, }: {
4
5
  fullPage?: boolean;
5
6
  type: 'sign-in' | 'sign-up';
7
+ mockProject?: ClientProjectJson;
6
8
  }): react_jsx_runtime.JSX.Element;
7
9
 
8
10
  export { AuthPage as default };
@@ -1,8 +1,10 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ClientProjectJson } from '@stackframe/stack-shared';
2
3
 
3
- declare function AuthPage({ fullPage, type }: {
4
+ declare function AuthPage({ fullPage, type, mockProject, }: {
4
5
  fullPage?: boolean;
5
6
  type: 'sign-in' | 'sign-up';
7
+ mockProject?: ClientProjectJson;
6
8
  }): react_jsx_runtime.JSX.Element;
7
9
 
8
10
  export { AuthPage as default };
@@ -46,12 +46,13 @@ var import_magic_link_sign_in = __toESM(require("../components/magic-link-sign-i
46
46
  var import_jsx_runtime = require("react/jsx-runtime");
47
47
  function AuthPage({
48
48
  fullPage = false,
49
- type
49
+ type,
50
+ mockProject
50
51
  }) {
51
52
  const stackApp = (0, import__.useStackApp)();
52
53
  const user = (0, import__.useUser)();
53
- const project = stackApp.useProject();
54
- if (user) {
54
+ const project = mockProject || stackApp.useProject();
55
+ if (user && !mockProject) {
55
56
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_redirect_message_card.default, { type: "signedIn", fullPage });
56
57
  }
57
58
  const enableSeparator = (project.credentialEnabled || project.magicLinkEnabled) && project.oauthProviders.filter((p) => p.enabled).length > 0;
@@ -66,7 +67,7 @@ function AuthPage({
66
67
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components_core.Link, { href: stackApp.urls.signIn, children: "Sign in" })
67
68
  ] })
68
69
  ] }),
69
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_oauth_group.default, { type: "signin" }),
70
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_oauth_group.default, { type: "signin", mockProject }),
70
71
  enableSeparator && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_separator_with_text.default, { text: "Or continue with" }),
71
72
  project.credentialEnabled && project.magicLinkEnabled ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components_core.Tabs, { defaultValue: "magic-link", children: [
72
73
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_components_core.TabsList, { children: [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components-page/auth-page.tsx"],"sourcesContent":["'use client';\n\nimport CredentialSignIn from '../components/credential-sign-in';\nimport SeparatorWithText from '../components/separator-with-text';\nimport OAuthGroup from '../components/oauth-group';\nimport CardFrame from '../components/card-frame';\nimport { useUser, useStackApp, CredentialSignUp } from '..';\nimport RedirectMessageCard from '../components/redirect-message-card';\nimport { Link, Tabs, TabsContent, TabsList, TabsTrigger, Text } from \"../components-core\";\nimport MagicLinkSignIn from '../components/magic-link-sign-in';\n\nexport default function AuthPage({ \n fullPage=false,\n type\n}: { \n fullPage?: boolean, \n type: 'sign-in' | 'sign-up',\n}) {\n const stackApp = useStackApp();\n const user = useUser();\n const project = stackApp.useProject();\n\n if (user) {\n return <RedirectMessageCard type='signedIn' fullPage={fullPage} />;\n }\n\n const enableSeparator = (project.credentialEnabled || project.magicLinkEnabled) && project.oauthProviders.filter(p => p.enabled).length > 0;\n\n return (\n <CardFrame fullPage={fullPage}>\n <div style={{ textAlign: 'center', marginBottom: '1.5rem' }}>\n <Text size=\"xl\" as='h2'>{type === 'sign-in' ? 'Sign in to your account' : 'Create a new account'}</Text>\n {type === 'sign-in' ? (\n <Text>\n {\"Don't have an account? \"}\n <Link href={stackApp.urls.signUp}>\n Sign up\n </Link>\n </Text>\n ) : (\n <Text>\n {\"Already have an account? \"}\n <Link href={stackApp.urls.signIn}>\n Sign in\n </Link>\n </Text>\n )}\n </div>\n <OAuthGroup type='signin'/>\n {enableSeparator && <SeparatorWithText text={'Or continue with'} />}\n {project.credentialEnabled && project.magicLinkEnabled ? (\n <Tabs defaultValue='magic-link'>\n <TabsList>\n <TabsTrigger value='magic-link'>Magic Link</TabsTrigger>\n <TabsTrigger value='password'>Password</TabsTrigger>\n </TabsList>\n <TabsContent value='magic-link'>\n <MagicLinkSignIn/>\n </TabsContent>\n <TabsContent value='password'>\n {type === 'sign-up' ? <CredentialSignUp/> : <CredentialSignIn/>}\n </TabsContent>\n </Tabs>\n ) : project.credentialEnabled ? (\n type === 'sign-up' ? <CredentialSignUp/> : <CredentialSignIn/>\n ) : project.magicLinkEnabled ? (\n <MagicLinkSignIn/>\n ) : null}\n </CardFrame>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,gCAA6B;AAC7B,iCAA8B;AAC9B,yBAAuB;AACvB,wBAAsB;AACtB,eAAuD;AACvD,mCAAgC;AAChC,6BAAqE;AACrE,gCAA4B;AAcjB;AAZI,SAAR,SAA0B;AAAA,EAC/B,WAAS;AAAA,EACT;AACF,GAGG;AACD,QAAM,eAAW,sBAAY;AAC7B,QAAM,WAAO,kBAAQ;AACrB,QAAM,UAAU,SAAS,WAAW;AAEpC,MAAI,MAAM;AACR,WAAO,4CAAC,6BAAAA,SAAA,EAAoB,MAAK,YAAW,UAAoB;AAAA,EAClE;AAEA,QAAM,mBAAmB,QAAQ,qBAAqB,QAAQ,qBAAqB,QAAQ,eAAe,OAAO,OAAK,EAAE,OAAO,EAAE,SAAS;AAE1I,SACE,6CAAC,kBAAAC,SAAA,EAAU,UACT;AAAA,iDAAC,SAAI,OAAO,EAAE,WAAW,UAAU,cAAc,SAAS,GACxD;AAAA,kDAAC,+BAAK,MAAK,MAAK,IAAG,MAAM,mBAAS,YAAY,4BAA4B,wBAAuB;AAAA,MAChG,SAAS,YACR,6CAAC,+BACE;AAAA;AAAA,QACD,4CAAC,+BAAK,MAAM,SAAS,KAAK,QAAQ,qBAElC;AAAA,SACF,IAEA,6CAAC,+BACE;AAAA;AAAA,QACD,4CAAC,+BAAK,MAAM,SAAS,KAAK,QAAQ,qBAElC;AAAA,SACF;AAAA,OAEJ;AAAA,IACA,4CAAC,mBAAAC,SAAA,EAAW,MAAK,UAAQ;AAAA,IACxB,mBAAmB,4CAAC,2BAAAC,SAAA,EAAkB,MAAM,oBAAoB;AAAA,IAChE,QAAQ,qBAAqB,QAAQ,mBACpC,6CAAC,+BAAK,cAAa,cACjB;AAAA,mDAAC,mCACC;AAAA,oDAAC,sCAAY,OAAM,cAAa,wBAAU;AAAA,QAC1C,4CAAC,sCAAY,OAAM,YAAW,sBAAQ;AAAA,SACxC;AAAA,MACA,4CAAC,sCAAY,OAAM,cACjB,sDAAC,0BAAAC,SAAA,EAAe,GAClB;AAAA,MACA,4CAAC,sCAAY,OAAM,YAChB,mBAAS,YAAY,4CAAC,6BAAgB,IAAK,4CAAC,0BAAAC,SAAA,EAAgB,GAC/D;AAAA,OACF,IACE,QAAQ,oBACV,SAAS,YAAY,4CAAC,6BAAgB,IAAK,4CAAC,0BAAAA,SAAA,EAAgB,IAC1D,QAAQ,mBACV,4CAAC,0BAAAD,SAAA,EAAe,IACd;AAAA,KACN;AAEJ;","names":["RedirectMessageCard","CardFrame","OAuthGroup","SeparatorWithText","MagicLinkSignIn","CredentialSignIn"]}
1
+ {"version":3,"sources":["../../src/components-page/auth-page.tsx"],"sourcesContent":["'use client';\n\nimport CredentialSignIn from '../components/credential-sign-in';\nimport SeparatorWithText from '../components/separator-with-text';\nimport OAuthGroup from '../components/oauth-group';\nimport CardFrame from '../components/card-frame';\nimport { useUser, useStackApp, CredentialSignUp } from '..';\nimport RedirectMessageCard from '../components/redirect-message-card';\nimport { Link, Tabs, TabsContent, TabsList, TabsTrigger, Text } from \"../components-core\";\nimport MagicLinkSignIn from '../components/magic-link-sign-in';\nimport { ClientProjectJson } from \"@stackframe/stack-shared\";\n\nexport default function AuthPage({ \n fullPage=false,\n type,\n mockProject,\n}: { \n fullPage?: boolean, \n type: 'sign-in' | 'sign-up',\n mockProject?: ClientProjectJson,\n}) {\n const stackApp = useStackApp();\n const user = useUser();\n const project = mockProject || stackApp.useProject();\n\n if (user && !mockProject) {\n return <RedirectMessageCard type='signedIn' fullPage={fullPage} />;\n }\n\n const enableSeparator = (project.credentialEnabled || project.magicLinkEnabled) && project.oauthProviders.filter(p => p.enabled).length > 0;\n\n return (\n <CardFrame fullPage={fullPage}>\n <div style={{ textAlign: 'center', marginBottom: '1.5rem' }}>\n <Text size=\"xl\" as='h2'>{type === 'sign-in' ? 'Sign in to your account' : 'Create a new account'}</Text>\n {type === 'sign-in' ? (\n <Text>\n {\"Don't have an account? \"}\n <Link href={stackApp.urls.signUp}>\n Sign up\n </Link>\n </Text>\n ) : (\n <Text>\n {\"Already have an account? \"}\n <Link href={stackApp.urls.signIn}>\n Sign in\n </Link>\n </Text>\n )}\n </div>\n <OAuthGroup type='signin' mockProject={mockProject} />\n {enableSeparator && <SeparatorWithText text={'Or continue with'} />}\n {project.credentialEnabled && project.magicLinkEnabled ? (\n <Tabs defaultValue='magic-link'>\n <TabsList>\n <TabsTrigger value='magic-link'>Magic Link</TabsTrigger>\n <TabsTrigger value='password'>Password</TabsTrigger>\n </TabsList>\n <TabsContent value='magic-link'>\n <MagicLinkSignIn/>\n </TabsContent>\n <TabsContent value='password'>\n {type === 'sign-up' ? <CredentialSignUp/> : <CredentialSignIn/>}\n </TabsContent>\n </Tabs>\n ) : project.credentialEnabled ? (\n type === 'sign-up' ? <CredentialSignUp/> : <CredentialSignIn/>\n ) : project.magicLinkEnabled ? (\n <MagicLinkSignIn/>\n ) : null}\n </CardFrame>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,gCAA6B;AAC7B,iCAA8B;AAC9B,yBAAuB;AACvB,wBAAsB;AACtB,eAAuD;AACvD,mCAAgC;AAChC,6BAAqE;AACrE,gCAA4B;AAiBjB;AAdI,SAAR,SAA0B;AAAA,EAC/B,WAAS;AAAA,EACT;AAAA,EACA;AACF,GAIG;AACD,QAAM,eAAW,sBAAY;AAC7B,QAAM,WAAO,kBAAQ;AACrB,QAAM,UAAU,eAAe,SAAS,WAAW;AAEnD,MAAI,QAAQ,CAAC,aAAa;AACxB,WAAO,4CAAC,6BAAAA,SAAA,EAAoB,MAAK,YAAW,UAAoB;AAAA,EAClE;AAEA,QAAM,mBAAmB,QAAQ,qBAAqB,QAAQ,qBAAqB,QAAQ,eAAe,OAAO,OAAK,EAAE,OAAO,EAAE,SAAS;AAE1I,SACE,6CAAC,kBAAAC,SAAA,EAAU,UACT;AAAA,iDAAC,SAAI,OAAO,EAAE,WAAW,UAAU,cAAc,SAAS,GACxD;AAAA,kDAAC,+BAAK,MAAK,MAAK,IAAG,MAAM,mBAAS,YAAY,4BAA4B,wBAAuB;AAAA,MAChG,SAAS,YACR,6CAAC,+BACE;AAAA;AAAA,QACD,4CAAC,+BAAK,MAAM,SAAS,KAAK,QAAQ,qBAElC;AAAA,SACF,IAEA,6CAAC,+BACE;AAAA;AAAA,QACD,4CAAC,+BAAK,MAAM,SAAS,KAAK,QAAQ,qBAElC;AAAA,SACF;AAAA,OAEJ;AAAA,IACA,4CAAC,mBAAAC,SAAA,EAAW,MAAK,UAAS,aAA0B;AAAA,IACnD,mBAAmB,4CAAC,2BAAAC,SAAA,EAAkB,MAAM,oBAAoB;AAAA,IAChE,QAAQ,qBAAqB,QAAQ,mBACpC,6CAAC,+BAAK,cAAa,cACjB;AAAA,mDAAC,mCACC;AAAA,oDAAC,sCAAY,OAAM,cAAa,wBAAU;AAAA,QAC1C,4CAAC,sCAAY,OAAM,YAAW,sBAAQ;AAAA,SACxC;AAAA,MACA,4CAAC,sCAAY,OAAM,cACjB,sDAAC,0BAAAC,SAAA,EAAe,GAClB;AAAA,MACA,4CAAC,sCAAY,OAAM,YAChB,mBAAS,YAAY,4CAAC,6BAAgB,IAAK,4CAAC,0BAAAC,SAAA,EAAgB,GAC/D;AAAA,OACF,IACE,QAAQ,oBACV,SAAS,YAAY,4CAAC,6BAAgB,IAAK,4CAAC,0BAAAA,SAAA,EAAgB,IAC1D,QAAQ,mBACV,4CAAC,0BAAAD,SAAA,EAAe,IACd;AAAA,KACN;AAEJ;","names":["RedirectMessageCard","CardFrame","OAuthGroup","SeparatorWithText","MagicLinkSignIn","CredentialSignIn"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/magic-link-sign-in.tsx"],"sourcesContent":["'use client';\n\nimport { useState } from \"react\";\nimport FormWarningText from \"./form-warning\";\nimport { validateEmail } from \"../utils/email\";\nimport { useStackApp } from \"..\";\nimport { Button, Input, Label, Link } from \"../components-core\";\n\nexport default function MagicLinkSignIn() {\n const [email, setEmail] = useState('');\n const [sent, setSent] = useState(false);\n const [error, setError] = useState('');\n const app = useStackApp();\n \n const onSubmit = async () => {\n if (!email) {\n setError('Please enter your email');\n return;\n }\n if (!validateEmail(email)) {\n setError('Please enter a valid email');\n return;\n }\n\n const error = await app.sendMagicLinkEmail(email);\n if (error) {\n setError(error.message);\n return;\n }\n setSent(true);\n };\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'stretch' }}>\n <Label htmlFor=\"email\">Email</Label>\n <Input\n id=\"email\"\n type=\"email\"\n name=\"email\"\n value={email}\n onChange={(e) => {\n setEmail(e.target.value);\n setError('');\n }}\n />\n <FormWarningText text={error} />\n\n <Button\n disabled={sent}\n style={{ marginTop: '1.5rem' }}\n onClick={onSubmit}\n >\n {sent ? 'Email sent' : 'Send magic link'}\n </Button>\n </div>\n );\n}\n"],"mappings":";;;AAEA,SAAS,gBAAgB;AACzB,OAAO,qBAAqB;AAC5B,SAAS,qBAAqB;AAC9B,SAAS,mBAAmB;AAC5B,SAAS,QAAQ,OAAO,aAAmB;AA2BvC,SACE,KADF;AAzBW,SAAR,kBAAmC;AACxC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,EAAE;AACrC,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AACtC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,EAAE;AACrC,QAAM,MAAM,YAAY;AAExB,QAAM,WAAW,YAAY;AAC3B,QAAI,CAAC,OAAO;AACV,eAAS,yBAAyB;AAClC;AAAA,IACF;AACA,QAAI,CAAC,cAAc,KAAK,GAAG;AACzB,eAAS,4BAA4B;AACrC;AAAA,IACF;AAEA,UAAMA,SAAQ,MAAM,IAAI,mBAAmB,KAAK;AAChD,QAAIA,QAAO;AACT,eAASA,OAAM,OAAO;AACtB;AAAA,IACF;AACA,YAAQ,IAAI;AAAA,EACd;AAEA,SACE,qBAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,YAAY,UAAU,GAC5E;AAAA,wBAAC,SAAM,SAAQ,SAAQ,mBAAK;AAAA,IAC5B;AAAA,MAAC;AAAA;AAAA,QACC,IAAG;AAAA,QACH,MAAK;AAAA,QACL,MAAK;AAAA,QACL,OAAO;AAAA,QACP,UAAU,CAAC,MAAM;AACf,mBAAS,EAAE,OAAO,KAAK;AACvB,mBAAS,EAAE;AAAA,QACb;AAAA;AAAA,IACF;AAAA,IACA,oBAAC,mBAAgB,MAAM,OAAO;AAAA,IAE9B;AAAA,MAAC;AAAA;AAAA,QACC,UAAU;AAAA,QACV,OAAO,EAAE,WAAW,SAAS;AAAA,QAC7B,SAAS;AAAA,QAER,iBAAO,eAAe;AAAA;AAAA,IACzB;AAAA,KACF;AAEJ;","names":["error"]}
1
+ {"version":3,"sources":["../../../src/components/magic-link-sign-in.tsx"],"sourcesContent":["'use client';;\nimport { useState } from \"react\";\nimport FormWarningText from \"./form-warning\";\nimport { validateEmail } from \"../utils/email\";\nimport { useStackApp } from \"..\";\nimport { Button, Input, Label } from \"../components-core\";\n\nexport default function MagicLinkSignIn() {\n const [email, setEmail] = useState('');\n const [sent, setSent] = useState(false);\n const [error, setError] = useState('');\n const app = useStackApp();\n \n const onSubmit = async () => {\n if (!email) {\n setError('Please enter your email');\n return;\n }\n if (!validateEmail(email)) {\n setError('Please enter a valid email');\n return;\n }\n\n const error = await app.sendMagicLinkEmail(email);\n if (error) {\n setError(error.message);\n return;\n }\n setSent(true);\n };\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'stretch' }}>\n <Label htmlFor=\"email\">Email</Label>\n <Input\n id=\"email\"\n type=\"email\"\n name=\"email\"\n value={email}\n onChange={(e) => {\n setEmail(e.target.value);\n setError('');\n }}\n />\n <FormWarningText text={error} />\n\n <Button\n disabled={sent}\n style={{ marginTop: '1.5rem' }}\n onClick={onSubmit}\n >\n {sent ? 'Email sent' : 'Send magic link'}\n </Button>\n </div>\n );\n}\n"],"mappings":";;;AACA,SAAS,gBAAgB;AACzB,OAAO,qBAAqB;AAC5B,SAAS,qBAAqB;AAC9B,SAAS,mBAAmB;AAC5B,SAAS,QAAQ,OAAO,aAAa;AA2BjC,SACE,KADF;AAzBW,SAAR,kBAAmC;AACxC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,EAAE;AACrC,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AACtC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,EAAE;AACrC,QAAM,MAAM,YAAY;AAExB,QAAM,WAAW,YAAY;AAC3B,QAAI,CAAC,OAAO;AACV,eAAS,yBAAyB;AAClC;AAAA,IACF;AACA,QAAI,CAAC,cAAc,KAAK,GAAG;AACzB,eAAS,4BAA4B;AACrC;AAAA,IACF;AAEA,UAAMA,SAAQ,MAAM,IAAI,mBAAmB,KAAK;AAChD,QAAIA,QAAO;AACT,eAASA,OAAM,OAAO;AACtB;AAAA,IACF;AACA,YAAQ,IAAI;AAAA,EACd;AAEA,SACE,qBAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,YAAY,UAAU,GAC5E;AAAA,wBAAC,SAAM,SAAQ,SAAQ,mBAAK;AAAA,IAC5B;AAAA,MAAC;AAAA;AAAA,QACC,IAAG;AAAA,QACH,MAAK;AAAA,QACL,MAAK;AAAA,QACL,OAAO;AAAA,QACP,UAAU,CAAC,MAAM;AACf,mBAAS,EAAE,OAAO,KAAK;AACvB,mBAAS,EAAE;AAAA,QACb;AAAA;AAAA,IACF;AAAA,IACA,oBAAC,mBAAgB,MAAM,OAAO;AAAA,IAE9B;AAAA,MAAC;AAAA;AAAA,QACC,UAAU;AAAA,QACV,OAAO,EAAE,WAAW,SAAS;AAAA,QAC7B,SAAS;AAAA,QAER,iBAAO,eAAe;AAAA;AAAA,IACzB;AAAA,KACF;AAEJ;","names":["error"]}
@@ -5,14 +5,12 @@
5
5
  import { FaGithub, FaFacebook, FaApple } from "react-icons/fa";
6
6
  import { useStackApp } from "..";
7
7
  import { Button } from "../components-core";
8
- import { useDesign } from "../providers/design-provider";
9
8
  import { jsx, jsxs } from "react/jsx-runtime";
10
9
  var iconSize = 22;
11
10
  function OAuthButton({
12
11
  provider,
13
12
  type
14
13
  }) {
15
- const { colors } = useDesign();
16
14
  const stackApp = useStackApp();
17
15
  let style;
18
16
  switch (provider) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/oauth-button.tsx"],"sourcesContent":["'use client';\n\nimport { FaGithub, FaFacebook, FaApple } from 'react-icons/fa';\nimport { useStackApp } from '..';\nimport { Button } from \"../components-core\";\nimport { useDesign } from \"../providers/design-provider\";\nimport Color from 'color';\n\nconst iconSize = 22;\n\nexport default function OAuthButton({\n provider,\n type,\n}: {\n provider: string,\n type: 'signin' | 'signup',\n}) {\n const { colors } = useDesign();\n const stackApp = useStackApp();\n\n let style : {\n backgroundColor: string,\n name: string,\n icon: JSX.Element | null,\n border?: string,\n };\n switch (provider) {\n case 'google': {\n style = {\n backgroundColor: '#fff',\n name: 'Google',\n border: '1px solid #ccc',\n icon: (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={iconSize} height={iconSize} viewBox=\"0 0 24 24\">\n <path\n fill=\"#4285F4\"\n d=\"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z\"\n />\n <path\n fill=\"#34A853\"\n d=\"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z\"\n />\n <path\n fill=\"#FBBC05\"\n d=\"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z\"\n />\n <path\n fill=\"#EA4335\"\n d=\"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z\"\n />\n <path fill=\"none\" d=\"M1 1h22v22H1z\" />\n </svg>\n ),\n };\n break;\n }\n case 'github': {\n style = {\n backgroundColor: '#111',\n border: '1px solid #444',\n name: 'GitHub',\n icon: (\n <FaGithub color=\"#fff\" size={iconSize} />\n ),\n };\n break;\n }\n case 'facebook': {\n style = {\n backgroundColor: '#1877F2',\n name: 'Facebook',\n icon: (\n <FaFacebook color=\"#fff\" size={iconSize} />\n ),\n };\n break;\n }\n case 'apple': {\n style = {\n backgroundColor: '#000',\n name: 'Apple',\n icon: (\n <FaApple color=\"#fff\" size={iconSize} />\n ),\n };\n break;\n }\n case 'microsoft': {\n style = {\n backgroundColor: '#2f2f2f',\n name: 'Microsoft',\n icon: (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={iconSize} height={iconSize} viewBox=\"0 0 21 21\">\n <title>{\"MS-SymbolLockup\"}</title>\n <path fill=\"#f25022\" d=\"M1 1h9v9H1z\" />\n <path fill=\"#00a4ef\" d=\"M1 11h9v9H1z\" />\n <path fill=\"#7fba00\" d=\"M11 1h9v9h-9z\" />\n <path fill=\"#ffb900\" d=\"M11 11h9v9h-9z\" />\n </svg>\n ),\n };\n break;\n }\n default: {\n style = {\n backgroundColor: '#000',\n name: provider,\n icon: null\n };\n }\n }\n\n return (\n <Button\n color={style.backgroundColor}\n style={{ border: style.border }}\n onClick={() => stackApp.signInWithOAuth(provider)}\n >\n <div style={{ display: 'flex', alignItems: 'center', width: '100%' }}>\n {style.icon}\n <span style={{ flexGrow: 1 }}>{type === 'signup' ? 'Sign up with ' : 'Sign in with '}{style.name}</span>\n {<div style={{ visibility: 'hidden' }}>{style.icon}</div>}\n </div>\n </Button>\n );\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/components/oauth-button.tsx"],"sourcesContent":["'use client';\n\nimport { FaGithub, FaFacebook, FaApple } from 'react-icons/fa';\nimport { useStackApp } from '..';\nimport { Button } from \"../components-core\";\n\nconst iconSize = 22;\n\nexport default function OAuthButton({\n provider,\n type,\n}: {\n provider: string,\n type: 'signin' | 'signup',\n}) {\n const stackApp = useStackApp();\n\n let style : {\n backgroundColor: string,\n name: string,\n icon: JSX.Element | null,\n border?: string,\n };\n switch (provider) {\n case 'google': {\n style = {\n backgroundColor: '#fff',\n name: 'Google',\n border: '1px solid #ccc',\n icon: (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={iconSize} height={iconSize} viewBox=\"0 0 24 24\">\n <path\n fill=\"#4285F4\"\n d=\"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z\"\n />\n <path\n fill=\"#34A853\"\n d=\"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z\"\n />\n <path\n fill=\"#FBBC05\"\n d=\"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z\"\n />\n <path\n fill=\"#EA4335\"\n d=\"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z\"\n />\n <path fill=\"none\" d=\"M1 1h22v22H1z\" />\n </svg>\n ),\n };\n break;\n }\n case 'github': {\n style = {\n backgroundColor: '#111',\n border: '1px solid #444',\n name: 'GitHub',\n icon: (\n <FaGithub color=\"#fff\" size={iconSize} />\n ),\n };\n break;\n }\n case 'facebook': {\n style = {\n backgroundColor: '#1877F2',\n name: 'Facebook',\n icon: (\n <FaFacebook color=\"#fff\" size={iconSize} />\n ),\n };\n break;\n }\n case 'apple': {\n style = {\n backgroundColor: '#000',\n name: 'Apple',\n icon: (\n <FaApple color=\"#fff\" size={iconSize} />\n ),\n };\n break;\n }\n case 'microsoft': {\n style = {\n backgroundColor: '#2f2f2f',\n name: 'Microsoft',\n icon: (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={iconSize} height={iconSize} viewBox=\"0 0 21 21\">\n <title>{\"MS-SymbolLockup\"}</title>\n <path fill=\"#f25022\" d=\"M1 1h9v9H1z\" />\n <path fill=\"#00a4ef\" d=\"M1 11h9v9H1z\" />\n <path fill=\"#7fba00\" d=\"M11 1h9v9h-9z\" />\n <path fill=\"#ffb900\" d=\"M11 11h9v9h-9z\" />\n </svg>\n ),\n };\n break;\n }\n default: {\n style = {\n backgroundColor: '#000',\n name: provider,\n icon: null\n };\n }\n }\n\n return (\n <Button\n color={style.backgroundColor}\n style={{ border: style.border }}\n onClick={() => stackApp.signInWithOAuth(provider)}\n >\n <div style={{ display: 'flex', alignItems: 'center', width: '100%' }}>\n {style.icon}\n <span style={{ flexGrow: 1 }}>{type === 'signup' ? 'Sign up with ' : 'Sign in with '}{style.name}</span>\n {<div style={{ visibility: 'hidden' }}>{style.icon}</div>}\n </div>\n </Button>\n );\n}\n"],"mappings":";;;AAEA,SAAS,UAAU,YAAY,eAAe;AAC9C,SAAS,mBAAmB;AAC5B,SAAS,cAAc;AA0Bb,SACE,KADF;AAxBV,IAAM,WAAW;AAEF,SAAR,YAA6B;AAAA,EAClC;AAAA,EACA;AACF,GAGG;AACD,QAAM,WAAW,YAAY;AAE7B,MAAI;AAMJ,UAAQ,UAAU;AAAA,IAChB,KAAK,UAAU;AACb,cAAQ;AAAA,QACN,iBAAiB;AAAA,QACjB,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,MACE,qBAAC,SAAI,OAAM,8BAA6B,OAAO,UAAU,QAAQ,UAAU,SAAQ,aACjF;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,GAAE;AAAA;AAAA,UACJ;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,GAAE;AAAA;AAAA,UACJ;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,GAAE;AAAA;AAAA,UACJ;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,GAAE;AAAA;AAAA,UACJ;AAAA,UACA,oBAAC,UAAK,MAAK,QAAO,GAAE,iBAAgB;AAAA,WACtC;AAAA,MAEJ;AACA;AAAA,IACF;AAAA,IACA,KAAK,UAAU;AACb,cAAQ;AAAA,QACN,iBAAiB;AAAA,QACjB,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,MACE,oBAAC,YAAS,OAAM,QAAO,MAAM,UAAU;AAAA,MAE3C;AACA;AAAA,IACF;AAAA,IACA,KAAK,YAAY;AACf,cAAQ;AAAA,QACN,iBAAiB;AAAA,QACjB,MAAM;AAAA,QACN,MACE,oBAAC,cAAW,OAAM,QAAO,MAAM,UAAU;AAAA,MAE7C;AACA;AAAA,IACF;AAAA,IACA,KAAK,SAAS;AACZ,cAAQ;AAAA,QACN,iBAAiB;AAAA,QACjB,MAAM;AAAA,QACN,MACE,oBAAC,WAAQ,OAAM,QAAO,MAAM,UAAU;AAAA,MAE1C;AACA;AAAA,IACF;AAAA,IACA,KAAK,aAAa;AAChB,cAAQ;AAAA,QACN,iBAAiB;AAAA,QACjB,MAAM;AAAA,QACN,MACE,qBAAC,SAAI,OAAM,8BAA6B,OAAO,UAAU,QAAQ,UAAU,SAAQ,aACjF;AAAA,8BAAC,WAAO,6BAAkB;AAAA,UAC1B,oBAAC,UAAK,MAAK,WAAU,GAAE,eAAc;AAAA,UACrC,oBAAC,UAAK,MAAK,WAAU,GAAE,gBAAe;AAAA,UACtC,oBAAC,UAAK,MAAK,WAAU,GAAE,iBAAgB;AAAA,UACvC,oBAAC,UAAK,MAAK,WAAU,GAAE,kBAAiB;AAAA,WAC1C;AAAA,MAEJ;AACA;AAAA,IACF;AAAA,IACA,SAAS;AACP,cAAQ;AAAA,QACN,iBAAiB;AAAA,QACjB,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,MAAM;AAAA,MACb,OAAO,EAAE,QAAQ,MAAM,OAAO;AAAA,MAC9B,SAAS,MAAM,SAAS,gBAAgB,QAAQ;AAAA,MAEhD,+BAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,OAAO,OAAO,GAChE;AAAA,cAAM;AAAA,QACP,qBAAC,UAAK,OAAO,EAAE,UAAU,EAAE,GAAI;AAAA,mBAAS,WAAW,kBAAkB;AAAA,UAAiB,MAAM;AAAA,WAAK;AAAA,QAChG,oBAAC,SAAI,OAAO,EAAE,YAAY,SAAS,GAAI,gBAAM,MAAK;AAAA,SACrD;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -6,10 +6,11 @@ import { useStackApp } from "../lib/hooks";
6
6
  import OAuthButton from "./oauth-button";
7
7
  import { jsx } from "react/jsx-runtime";
8
8
  function OAuthGroup({
9
- type
9
+ type,
10
+ mockProject
10
11
  }) {
11
12
  const stackApp = useStackApp();
12
- const project = stackApp.useProject();
13
+ const project = mockProject || stackApp.useProject();
13
14
  return /* @__PURE__ */ jsx("div", { style: { gap: "16px", display: "flex", flexDirection: "column", alignItems: "stretch" }, children: project.oauthProviders.filter((p) => p.enabled).map((p) => /* @__PURE__ */ jsx(OAuthButton, { provider: p.id, type }, p.id)) });
14
15
  }
15
16
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/oauth-group.tsx"],"sourcesContent":["'use client';\n\nimport { useStackApp } from \"../lib/hooks\";\nimport OAuthButton from \"./oauth-button\";\n\nexport default function OAuthGroup({\n type,\n}: {\n type: 'signin' | 'signup',\n}) {\n const stackApp = useStackApp();\n const project = stackApp.useProject();\n\n return (\n <div style={{ gap: '16px', display: 'flex', flexDirection: 'column', alignItems: 'stretch' }}>\n {project.oauthProviders.filter(p => p.enabled).map(p => (\n <OAuthButton key={p.id} provider={p.id} type={type}/>\n ))}\n </div>\n );\n}\n"],"mappings":";;;AAEA,SAAS,mBAAmB;AAC5B,OAAO,iBAAiB;AAahB;AAXO,SAAR,WAA4B;AAAA,EACjC;AACF,GAEG;AACD,QAAM,WAAW,YAAY;AAC7B,QAAM,UAAU,SAAS,WAAW;AAEpC,SACE,oBAAC,SAAI,OAAO,EAAE,KAAK,QAAQ,SAAS,QAAQ,eAAe,UAAU,YAAY,UAAU,GACxF,kBAAQ,eAAe,OAAO,OAAK,EAAE,OAAO,EAAE,IAAI,OACjD,oBAAC,eAAuB,UAAU,EAAE,IAAI,QAAtB,EAAE,EAA+B,CACpD,GACH;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/oauth-group.tsx"],"sourcesContent":["'use client';\n\nimport { ClientProjectJson } from \"@stackframe/stack-shared\";\nimport { useStackApp } from \"../lib/hooks\";\nimport OAuthButton from \"./oauth-button\";\n\nexport default function OAuthGroup({\n type,\n mockProject,\n}: {\n type: 'signin' | 'signup',\n mockProject?: ClientProjectJson,\n}) {\n const stackApp = useStackApp();\n const project = mockProject || stackApp.useProject();\n\n return (\n <div style={{ gap: '16px', display: 'flex', flexDirection: 'column', alignItems: 'stretch' }}>\n {project.oauthProviders.filter(p => p.enabled).map(p => (\n <OAuthButton key={p.id} provider={p.id} type={type}/>\n ))}\n </div>\n );\n}\n"],"mappings":";;;AAGA,SAAS,mBAAmB;AAC5B,OAAO,iBAAiB;AAehB;AAbO,SAAR,WAA4B;AAAA,EACjC;AAAA,EACA;AACF,GAGG;AACD,QAAM,WAAW,YAAY;AAC7B,QAAM,UAAU,eAAe,SAAS,WAAW;AAEnD,SACE,oBAAC,SAAI,OAAO,EAAE,KAAK,QAAQ,SAAS,QAAQ,eAAe,UAAU,YAAY,UAAU,GACxF,kBAAQ,eAAe,OAAO,OAAK,EAAE,OAAO,EAAE,IAAI,OACjD,oBAAC,eAAuB,UAAU,EAAE,IAAI,QAAtB,EAAE,EAA+B,CACpD,GACH;AAEJ;","names":[]}
@@ -11,7 +11,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
11
11
  var getIconStyle = (colors) => `
12
12
  color: ${colors.light.secondaryColor};
13
13
 
14
- html[data-theme='dark'] & {
14
+ html[data-stack-theme='dark'] & {
15
15
  color: ${colors.dark.secondaryColor};
16
16
  }
17
17
  `;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/password-field.tsx"],"sourcesContent":["'use client';\n\nimport { Input } from \"../components-core\";\nimport { forwardRef, useRef, useState } from 'react';\nimport { HiEye, HiEyeOff } from 'react-icons/hi';\nimport { useDesign } from \"..\";\nimport styled from \"styled-components\";\nimport { ColorPalette } from \"../providers/design-provider\";\n\nconst getIconStyle = (colors: ColorPalette) => `\n color: ${colors.light.secondaryColor};\n\n html[data-theme='dark'] & {\n color: ${colors.dark.secondaryColor};\n }\n`;\nconst StyledEyeOff = styled(HiEyeOff)<{ colors: ColorPalette }>`${props => getIconStyle(props.colors)}`;\nconst StyledEye = styled(HiEye)<{ colors: ColorPalette }>`${props => getIconStyle(props.colors)}`;\n\nconst PasswordField = forwardRef<\n HTMLInputElement, \n React.InputHTMLAttributes<HTMLInputElement>\n>(({ id, name, ...props }, ref) => {\n const [isOpen, setIsOpen] = useState(false);\n const { colors } = useDesign();\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const mergeRef = (node: HTMLInputElement) => {\n if (ref) {\n if (typeof ref === 'function') {\n ref(node);\n } else {\n ref.current = node;\n }\n }\n inputRef.current = node;\n };\n\n const onClickReveal = () => {\n setIsOpen(!isOpen);\n const currentInput = inputRef.current;\n if (currentInput) {\n currentInput.focus({ preventScroll: true });\n }\n };\n\n return (\n <div style={{ position: 'relative', display: 'flex' }}>\n <Input\n id={id}\n ref={mergeRef}\n name={name}\n type={isOpen ? 'text' : 'password'}\n autoComplete=\"current-password\"\n required\n style={{ flex: 1 }}\n {...props}\n />\n <button\n tabIndex={-1}\n type=\"button\"\n style={{ \n position: 'absolute', \n backgroundColor: 'transparent',\n border: 'none',\n top: 0, \n right: 0, \n bottom: 0, \n display: 'flex', \n alignItems: 'center', \n paddingRight: '12px' \n }}\n onClick={onClickReveal}\n aria-label={isOpen ? 'Mask password' : 'Reveal password'}\n >\n {isOpen ? <StyledEyeOff colors={colors} /> : <StyledEye colors={colors} />}\n </button>\n </div>\n );\n});\n\nPasswordField.displayName = 'PasswordField';\n\nexport default PasswordField;\n"],"mappings":";;;AAEA,SAAS,aAAa;AACtB,SAAS,YAAY,QAAQ,gBAAgB;AAC7C,SAAS,OAAO,gBAAgB;AAChC,SAAS,iBAAiB;AAC1B,OAAO,YAAY;AAyCf,SACE,KADF;AAtCJ,IAAM,eAAe,CAAC,WAAyB;AAAA,WACpC,OAAO,MAAM,cAAc;AAAA;AAAA;AAAA,aAGzB,OAAO,KAAK,cAAc;AAAA;AAAA;AAGvC,IAAM,eAAe,OAAO,QAAQ,IAA8B,WAAS,aAAa,MAAM,MAAM,CAAC;AACrG,IAAM,YAAY,OAAO,KAAK,IAA8B,WAAS,aAAa,MAAM,MAAM,CAAC;AAE/F,IAAM,gBAAgB,WAGpB,CAAC,EAAE,IAAI,MAAM,GAAG,MAAM,GAAG,QAAQ;AACjC,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,KAAK;AAC1C,QAAM,EAAE,OAAO,IAAI,UAAU;AAC7B,QAAM,WAAW,OAAgC,IAAI;AAErD,QAAM,WAAW,CAAC,SAA2B;AAC3C,QAAI,KAAK;AACP,UAAI,OAAO,QAAQ,YAAY;AAC7B,YAAI,IAAI;AAAA,MACV,OAAO;AACL,YAAI,UAAU;AAAA,MAChB;AAAA,IACF;AACA,aAAS,UAAU;AAAA,EACrB;AAEA,QAAM,gBAAgB,MAAM;AAC1B,cAAU,CAAC,MAAM;AACjB,UAAM,eAAe,SAAS;AAC9B,QAAI,cAAc;AAChB,mBAAa,MAAM,EAAE,eAAe,KAAK,CAAC;AAAA,IAC5C;AAAA,EACF;AAEA,SACE,qBAAC,SAAI,OAAO,EAAE,UAAU,YAAY,SAAS,OAAO,GAClD;AAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,KAAK;AAAA,QACL;AAAA,QACA,MAAM,SAAS,SAAS;AAAA,QACxB,cAAa;AAAA,QACb,UAAQ;AAAA,QACR,OAAO,EAAE,MAAM,EAAE;AAAA,QAChB,GAAG;AAAA;AAAA,IACN;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,UAAU;AAAA,QACV,MAAK;AAAA,QACL,OAAO;AAAA,UACL,UAAU;AAAA,UACV,iBAAiB;AAAA,UACjB,QAAQ;AAAA,UACR,KAAK;AAAA,UACL,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,cAAc;AAAA,QAChB;AAAA,QACA,SAAS;AAAA,QACT,cAAY,SAAS,kBAAkB;AAAA,QAEtC,mBAAS,oBAAC,gBAAa,QAAgB,IAAK,oBAAC,aAAU,QAAgB;AAAA;AAAA,IAC1E;AAAA,KACF;AAEJ,CAAC;AAED,cAAc,cAAc;AAE5B,IAAO,yBAAQ;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/password-field.tsx"],"sourcesContent":["'use client';\n\nimport { Input } from \"../components-core\";\nimport { forwardRef, useRef, useState } from 'react';\nimport { HiEye, HiEyeOff } from 'react-icons/hi';\nimport { useDesign } from \"..\";\nimport styled from \"styled-components\";\nimport { ColorPalette } from \"../providers/design-provider\";\n\nconst getIconStyle = (colors: ColorPalette) => `\n color: ${colors.light.secondaryColor};\n\n html[data-stack-theme='dark'] & {\n color: ${colors.dark.secondaryColor};\n }\n`;\nconst StyledEyeOff = styled(HiEyeOff)<{ colors: ColorPalette }>`${props => getIconStyle(props.colors)}`;\nconst StyledEye = styled(HiEye)<{ colors: ColorPalette }>`${props => getIconStyle(props.colors)}`;\n\nconst PasswordField = forwardRef<\n HTMLInputElement, \n React.InputHTMLAttributes<HTMLInputElement>\n>(({ id, name, ...props }, ref) => {\n const [isOpen, setIsOpen] = useState(false);\n const { colors } = useDesign();\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const mergeRef = (node: HTMLInputElement) => {\n if (ref) {\n if (typeof ref === 'function') {\n ref(node);\n } else {\n ref.current = node;\n }\n }\n inputRef.current = node;\n };\n\n const onClickReveal = () => {\n setIsOpen(!isOpen);\n const currentInput = inputRef.current;\n if (currentInput) {\n currentInput.focus({ preventScroll: true });\n }\n };\n\n return (\n <div style={{ position: 'relative', display: 'flex' }}>\n <Input\n id={id}\n ref={mergeRef}\n name={name}\n type={isOpen ? 'text' : 'password'}\n autoComplete=\"current-password\"\n required\n style={{ flex: 1 }}\n {...props}\n />\n <button\n tabIndex={-1}\n type=\"button\"\n style={{ \n position: 'absolute', \n backgroundColor: 'transparent',\n border: 'none',\n top: 0, \n right: 0, \n bottom: 0, \n display: 'flex', \n alignItems: 'center', \n paddingRight: '12px' \n }}\n onClick={onClickReveal}\n aria-label={isOpen ? 'Mask password' : 'Reveal password'}\n >\n {isOpen ? <StyledEyeOff colors={colors} /> : <StyledEye colors={colors} />}\n </button>\n </div>\n );\n});\n\nPasswordField.displayName = 'PasswordField';\n\nexport default PasswordField;\n"],"mappings":";;;AAEA,SAAS,aAAa;AACtB,SAAS,YAAY,QAAQ,gBAAgB;AAC7C,SAAS,OAAO,gBAAgB;AAChC,SAAS,iBAAiB;AAC1B,OAAO,YAAY;AAyCf,SACE,KADF;AAtCJ,IAAM,eAAe,CAAC,WAAyB;AAAA,WACpC,OAAO,MAAM,cAAc;AAAA;AAAA;AAAA,aAGzB,OAAO,KAAK,cAAc;AAAA;AAAA;AAGvC,IAAM,eAAe,OAAO,QAAQ,IAA8B,WAAS,aAAa,MAAM,MAAM,CAAC;AACrG,IAAM,YAAY,OAAO,KAAK,IAA8B,WAAS,aAAa,MAAM,MAAM,CAAC;AAE/F,IAAM,gBAAgB,WAGpB,CAAC,EAAE,IAAI,MAAM,GAAG,MAAM,GAAG,QAAQ;AACjC,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,KAAK;AAC1C,QAAM,EAAE,OAAO,IAAI,UAAU;AAC7B,QAAM,WAAW,OAAgC,IAAI;AAErD,QAAM,WAAW,CAAC,SAA2B;AAC3C,QAAI,KAAK;AACP,UAAI,OAAO,QAAQ,YAAY;AAC7B,YAAI,IAAI;AAAA,MACV,OAAO;AACL,YAAI,UAAU;AAAA,MAChB;AAAA,IACF;AACA,aAAS,UAAU;AAAA,EACrB;AAEA,QAAM,gBAAgB,MAAM;AAC1B,cAAU,CAAC,MAAM;AACjB,UAAM,eAAe,SAAS;AAC9B,QAAI,cAAc;AAChB,mBAAa,MAAM,EAAE,eAAe,KAAK,CAAC;AAAA,IAC5C;AAAA,EACF;AAEA,SACE,qBAAC,SAAI,OAAO,EAAE,UAAU,YAAY,SAAS,OAAO,GAClD;AAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,KAAK;AAAA,QACL;AAAA,QACA,MAAM,SAAS,SAAS;AAAA,QACxB,cAAa;AAAA,QACb,UAAQ;AAAA,QACR,OAAO,EAAE,MAAM,EAAE;AAAA,QAChB,GAAG;AAAA;AAAA,IACN;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,UAAU;AAAA,QACV,MAAK;AAAA,QACL,OAAO;AAAA,UACL,UAAU;AAAA,UACV,iBAAiB;AAAA,UACjB,QAAQ;AAAA,UACR,KAAK;AAAA,UACL,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,cAAc;AAAA,QAChB;AAAA,QACA,SAAS;AAAA,QACT,cAAY,SAAS,kBAAkB;AAAA,QAEtC,mBAAS,oBAAC,gBAAa,QAAgB,IAAK,oBAAC,aAAU,QAAgB;AAAA;AAAA,IAC1E;AAAA,KACF;AAEJ,CAAC;AAED,cAAc,cAAc;AAE5B,IAAO,yBAAQ;","names":[]}
@@ -22,7 +22,7 @@ var icons = typedFromEntries(typedEntries({
22
22
  const styledComponent = styled(value)`
23
23
  color: ${SECONDARY_FONT_COLORS.light};
24
24
 
25
- html[data-theme='dark'] & {
25
+ html[data-stack-theme='dark'] & {
26
26
  color: ${SECONDARY_FONT_COLORS.dark};
27
27
  }
28
28
  `;
@@ -64,7 +64,8 @@ function UserButtonInnerInner(props) {
64
64
  const textStyles = {
65
65
  textOverflow: "ellipsis",
66
66
  whiteSpace: "nowrap",
67
- overflow: "hidden"
67
+ overflow: "hidden",
68
+ margin: 0
68
69
  };
69
70
  return /* @__PURE__ */ jsxs(DropdownMenu, { children: [
70
71
  /* @__PURE__ */ jsx(DropdownMenuTrigger, { children: /* @__PURE__ */ jsxs("div", { style: { display: "flex", gap: "0.5rem", alignItems: "center" }, children: [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/user-button.tsx"],"sourcesContent":["'use client';\nimport React, { Suspense } from \"react\";\nimport { useUser, Text, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, DropdownMenuLabel, DropdownMenuSeparator, useStackApp, useDesign, Avatar, AvatarImage, AvatarFallback, Button, Skeleton, CurrentUser } from \"..\";\nimport { RxPerson, RxEnter, RxHalf2, RxFilePlus, RxPencil2 } from \"react-icons/rx\";\nimport { runAsynchronously } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { SECONDARY_FONT_COLORS } from \"../utils/constants\";\nimport UserAvatar from \"./user-avatar\";\nimport { useRouter } from \"next/navigation\";\nimport { typedEntries, typedFromEntries } from \"@stackframe/stack-shared/dist/utils/objects\";\nimport styled from \"styled-components\";\n\nconst icons = typedFromEntries(typedEntries({\n RxPencil2,\n RxPerson,\n RxEnter,\n RxHalf2,\n RxFilePlus\n} as const).map(([key, value]) => {\n const styledComponent = styled(value)`\n color: ${SECONDARY_FONT_COLORS.light};\n\n html[data-theme='dark'] & {\n color: ${SECONDARY_FONT_COLORS.dark};\n }\n `;\n return [\n key,\n React.createElement(styledComponent, { size: 20 })\n ];\n}));\n\nfunction Item(props: { text: string, icon: React.ReactNode, onClick: () => void | Promise<void> }) {\n return (\n <DropdownMenuItem \n onClick={() => runAsynchronously(props.onClick)}\n style={{ display: 'flex', gap: '0.5rem', alignItems: 'center' }}\n >\n {props.icon}\n <Text>{props.text}</Text>\n </DropdownMenuItem>\n );\n}\n\ntype UserButtonProps = {\n showUserInfo?: boolean,\n colorModeToggle?: () => void | Promise<void>,\n extraItems?: {\n text: string,\n icon: React.ReactNode,\n onClick: () => void | Promise<void>,\n }[],\n};\n\nexport default function UserButton(props: UserButtonProps) {\n return (\n <Suspense\n fallback={\n <Skeleton>\n <UserButtonInnerInner {...props} user={null} />\n </Skeleton>\n }\n >\n <UserButtonInner {...props} />\n </Suspense>\n );\n}\n\nfunction UserButtonInner(props: UserButtonProps) {\n const user = useUser();\n return <UserButtonInnerInner {...props} user={user} />;\n}\n\n\nfunction UserButtonInnerInner(props: UserButtonProps & { user: CurrentUser | null }) {\n const user = props.user;\n const app = useStackApp();\n const router = useRouter();\n\n const textStyles = {\n textOverflow: 'ellipsis', \n whiteSpace: 'nowrap', \n overflow: 'hidden'\n };\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger>\n <div style={{ display: 'flex', gap: '0.5rem', alignItems: 'center' }}>\n <UserAvatar user={user} />\n {user && props.showUserInfo && <div style={{ display: 'flex', flexDirection: 'column', justifyContent: 'center' }}>\n <Text style={textStyles}>{user.displayName}</Text>\n <Text style={{ ...textStyles, fontWeight: 400 }} variant=\"secondary\" size=\"sm\">{user.primaryEmail}</Text>\n </div>}\n </div>\n </DropdownMenuTrigger>\n <DropdownMenuContent style={{ zIndex: 1500 }}>\n <DropdownMenuLabel>\n <div style={{ display: 'flex', gap: '0.5rem', alignItems: 'center' }}>\n <UserAvatar user={user} />\n <div>\n {user && <Text>{user.displayName}</Text>}\n {user && <Text variant=\"secondary\" size=\"sm\" style={{ fontWeight: 400 }}>{user.primaryEmail}</Text>}\n {!user && <Text variant=\"secondary\">Not signed in</Text>}\n </div>\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n {user && <Item \n text=\"Account settings\" \n onClick={() => runAsynchronously(router.push(app.urls.accountSettings))}\n icon={icons.RxPerson}\n />}\n {!user && <Item\n text=\"Sign in\"\n onClick={() => runAsynchronously(router.push(app.urls.signIn))}\n icon={icons.RxPerson}\n />}\n {!user && <Item\n text=\"Sign up\"\n onClick={() => runAsynchronously(router.push(app.urls.signUp))}\n icon={icons.RxPencil2}\n />}\n {user && props.extraItems && props.extraItems.map((item, index) => (\n <Item key={index} {...item} />\n ))}\n {props.colorModeToggle && (\n <Item \n text=\"Toggle theme\" \n onClick={props.colorModeToggle} \n icon={icons.RxHalf2}\n />\n )}\n {user && <Item \n text=\"Sign out\" \n onClick={() => user.signOut()} \n icon={icons.RxEnter}\n />}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/components/user-button.tsx"],"sourcesContent":["'use client';\nimport React, { Suspense } from \"react\";\nimport { useUser, Text, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, DropdownMenuLabel, DropdownMenuSeparator, useStackApp, useDesign, Avatar, AvatarImage, AvatarFallback, Button, Skeleton, CurrentUser } from \"..\";\nimport { RxPerson, RxEnter, RxHalf2, RxFilePlus, RxPencil2 } from \"react-icons/rx\";\nimport { runAsynchronously } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { SECONDARY_FONT_COLORS } from \"../utils/constants\";\nimport UserAvatar from \"./user-avatar\";\nimport { useRouter } from \"next/navigation\";\nimport { typedEntries, typedFromEntries } from \"@stackframe/stack-shared/dist/utils/objects\";\nimport styled from \"styled-components\";\n\nconst icons = typedFromEntries(typedEntries({\n RxPencil2,\n RxPerson,\n RxEnter,\n RxHalf2,\n RxFilePlus\n} as const).map(([key, value]) => {\n const styledComponent = styled(value)`\n color: ${SECONDARY_FONT_COLORS.light};\n\n html[data-stack-theme='dark'] & {\n color: ${SECONDARY_FONT_COLORS.dark};\n }\n `;\n return [\n key,\n React.createElement(styledComponent, { size: 20 })\n ];\n}));\n\nfunction Item(props: { text: string, icon: React.ReactNode, onClick: () => void | Promise<void> }) {\n return (\n <DropdownMenuItem \n onClick={() => runAsynchronously(props.onClick)}\n style={{ display: 'flex', gap: '0.5rem', alignItems: 'center' }}\n >\n {props.icon}\n <Text>{props.text}</Text>\n </DropdownMenuItem>\n );\n}\n\ntype UserButtonProps = {\n showUserInfo?: boolean,\n colorModeToggle?: () => void | Promise<void>,\n extraItems?: {\n text: string,\n icon: React.ReactNode,\n onClick: () => void | Promise<void>,\n }[],\n};\n\nexport default function UserButton(props: UserButtonProps) {\n return (\n <Suspense\n fallback={\n <Skeleton>\n <UserButtonInnerInner {...props} user={null} />\n </Skeleton>\n }\n >\n <UserButtonInner {...props} />\n </Suspense>\n );\n}\n\nfunction UserButtonInner(props: UserButtonProps) {\n const user = useUser();\n return <UserButtonInnerInner {...props} user={user} />;\n}\n\n\nfunction UserButtonInnerInner(props: UserButtonProps & { user: CurrentUser | null }) {\n const user = props.user;\n const app = useStackApp();\n const router = useRouter();\n\n const textStyles = {\n textOverflow: 'ellipsis', \n whiteSpace: 'nowrap', \n overflow: 'hidden',\n margin: 0,\n };\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger>\n <div style={{ display: 'flex', gap: '0.5rem', alignItems: 'center' }}>\n <UserAvatar user={user} />\n {user && props.showUserInfo && <div style={{ display: 'flex', flexDirection: 'column', justifyContent: 'center' }}>\n <Text style={textStyles}>{user.displayName}</Text>\n <Text style={{ ...textStyles, fontWeight: 400 }} variant=\"secondary\" size=\"sm\">{user.primaryEmail}</Text>\n </div>}\n </div>\n </DropdownMenuTrigger>\n <DropdownMenuContent style={{ zIndex: 1500 }}>\n <DropdownMenuLabel>\n <div style={{ display: 'flex', gap: '0.5rem', alignItems: 'center' }}>\n <UserAvatar user={user} />\n <div>\n {user && <Text>{user.displayName}</Text>}\n {user && <Text variant=\"secondary\" size=\"sm\" style={{ fontWeight: 400 }}>{user.primaryEmail}</Text>}\n {!user && <Text variant=\"secondary\">Not signed in</Text>}\n </div>\n </div>\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n {user && <Item \n text=\"Account settings\" \n onClick={() => runAsynchronously(router.push(app.urls.accountSettings))}\n icon={icons.RxPerson}\n />}\n {!user && <Item\n text=\"Sign in\"\n onClick={() => runAsynchronously(router.push(app.urls.signIn))}\n icon={icons.RxPerson}\n />}\n {!user && <Item\n text=\"Sign up\"\n onClick={() => runAsynchronously(router.push(app.urls.signUp))}\n icon={icons.RxPencil2}\n />}\n {user && props.extraItems && props.extraItems.map((item, index) => (\n <Item key={index} {...item} />\n ))}\n {props.colorModeToggle && (\n <Item \n text=\"Toggle theme\" \n onClick={props.colorModeToggle} \n icon={icons.RxHalf2}\n />\n )}\n {user && <Item \n text=\"Sign out\" \n onClick={() => user.signOut()} \n icon={icons.RxEnter}\n />}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"],"mappings":"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","names":[]}
@@ -32,7 +32,7 @@ var StyledAvatarFallback = styled(AvatarPrimitive.Fallback)`
32
32
 
33
33
  background-color: ${({ $colors }) => $colors.light.secondaryColor};
34
34
 
35
- html[data-theme='dark'] & {
35
+ html[data-stack-theme='dark'] & {
36
36
  background-color: ${({ $colors }) => $colors.dark.secondaryColor};
37
37
  }
38
38
  `;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components-core/avatar.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as AvatarPrimitive from '@radix-ui/react-avatar';\nimport styled from 'styled-components';\nimport { useDesign } from '..';\nimport { ColorPalette } from '../providers/design-provider';\n\nconst StyledAvatar = styled(AvatarPrimitive.Root)`\n position: relative;\n display: flex;\n height: 2rem;\n width: 2rem;\n flex-shrink: 0;\n overflow: hidden;\n border-radius: 9999px;\n`;\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <StyledAvatar ref={ref} className={className} {...props} />\n));\nAvatar.displayName = 'Avatar';\n\nconst StyledAvatarImage = styled(AvatarPrimitive.Image)`\n aspect-ratio: 1 / 1;\n height: 100%;\n width: 100%;\n`;\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <StyledAvatarImage ref={ref} className={className} {...props} />\n));\nAvatarImage.displayName = 'AvatarImage';\n\nconst StyledAvatarFallback = styled(AvatarPrimitive.Fallback)<{\n $colors: ColorPalette,\n}>`\n display: flex;\n height: 100%;\n width: 100%;\n align-items: center;\n justify-content: center;\n border-radius: 9999px;\n \n background-color: ${({ $colors }) => $colors.light.secondaryColor};\n\n html[data-theme='dark'] & {\n background-color: ${({ $colors }) => $colors.dark.secondaryColor};\n }\n`;\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => {\n const { colors } = useDesign();\n return <StyledAvatarFallback \n ref={ref} \n className={className} \n $colors={colors}\n {...props} \n />;\n});\nAvatarFallback.displayName = 'AvatarFallback';\n\nexport { Avatar, AvatarImage, AvatarFallback };\n"],"mappings":";AAAA,YAAY,WAAW;AACvB,YAAY,qBAAqB;AACjC,OAAO,YAAY;AACnB,SAAS,iBAAiB;AAiBxB;AAdF,IAAM,eAAe,OAAuB,oBAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUhD,IAAM,SAAe,iBAGnB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,oBAAC,gBAAa,KAAU,WAAuB,GAAG,OAAO,CAC1D;AACD,OAAO,cAAc;AAErB,IAAM,oBAAoB,OAAuB,qBAAK;AAAA;AAAA;AAAA;AAAA;AAMtD,IAAM,cAAoB,iBAGxB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,oBAAC,qBAAkB,KAAU,WAAuB,GAAG,OAAO,CAC/D;AACD,YAAY,cAAc;AAE1B,IAAM,uBAAuB,OAAuB,wBAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAUtC,CAAC,EAAE,QAAQ,MAAM,QAAQ,MAAM,cAAc;AAAA;AAAA;AAAA,wBAG3C,CAAC,EAAE,QAAQ,MAAM,QAAQ,KAAK,cAAc;AAAA;AAAA;AAIpE,IAAM,iBAAuB,iBAG3B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ;AAClC,QAAM,EAAE,OAAO,IAAI,UAAU;AAC7B,SAAO;AAAA,IAAC;AAAA;AAAA,MACN;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACR,GAAG;AAAA;AAAA,EACN;AACF,CAAC;AACD,eAAe,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/components-core/avatar.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as AvatarPrimitive from '@radix-ui/react-avatar';\nimport styled from 'styled-components';\nimport { useDesign } from '..';\nimport { ColorPalette } from '../providers/design-provider';\n\nconst StyledAvatar = styled(AvatarPrimitive.Root)`\n position: relative;\n display: flex;\n height: 2rem;\n width: 2rem;\n flex-shrink: 0;\n overflow: hidden;\n border-radius: 9999px;\n`;\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <StyledAvatar ref={ref} className={className} {...props} />\n));\nAvatar.displayName = 'Avatar';\n\nconst StyledAvatarImage = styled(AvatarPrimitive.Image)`\n aspect-ratio: 1 / 1;\n height: 100%;\n width: 100%;\n`;\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <StyledAvatarImage ref={ref} className={className} {...props} />\n));\nAvatarImage.displayName = 'AvatarImage';\n\nconst StyledAvatarFallback = styled(AvatarPrimitive.Fallback)<{\n $colors: ColorPalette,\n}>`\n display: flex;\n height: 100%;\n width: 100%;\n align-items: center;\n justify-content: center;\n border-radius: 9999px;\n \n background-color: ${({ $colors }) => $colors.light.secondaryColor};\n\n html[data-stack-theme='dark'] & {\n background-color: ${({ $colors }) => $colors.dark.secondaryColor};\n }\n`;\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => {\n const { colors } = useDesign();\n return <StyledAvatarFallback \n ref={ref} \n className={className} \n $colors={colors}\n {...props} \n />;\n});\nAvatarFallback.displayName = 'AvatarFallback';\n\nexport { Avatar, AvatarImage, AvatarFallback };\n"],"mappings":";AAAA,YAAY,WAAW;AACvB,YAAY,qBAAqB;AACjC,OAAO,YAAY;AACnB,SAAS,iBAAiB;AAiBxB;AAdF,IAAM,eAAe,OAAuB,oBAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUhD,IAAM,SAAe,iBAGnB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,oBAAC,gBAAa,KAAU,WAAuB,GAAG,OAAO,CAC1D;AACD,OAAO,cAAc;AAErB,IAAM,oBAAoB,OAAuB,qBAAK;AAAA;AAAA;AAAA;AAAA;AAMtD,IAAM,cAAoB,iBAGxB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,oBAAC,qBAAkB,KAAU,WAAuB,GAAG,OAAO,CAC/D;AACD,YAAY,cAAc;AAE1B,IAAM,uBAAuB,OAAuB,wBAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAUtC,CAAC,EAAE,QAAQ,MAAM,QAAQ,MAAM,cAAc;AAAA;AAAA;AAAA,wBAG3C,CAAC,EAAE,QAAQ,MAAM,QAAQ,KAAK,cAAc;AAAA;AAAA;AAIpE,IAAM,iBAAuB,iBAG3B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ;AAClC,QAAM,EAAE,OAAO,IAAI,UAAU;AAC7B,SAAO;AAAA,IAAC;AAAA;AAAA,MACN;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACR,GAAG;AAAA;AAAA,EACN;AACF,CAAC;AACD,eAAe,cAAc;","names":[]}
@@ -116,7 +116,7 @@ var StyledButton = styled.button`
116
116
  }
117
117
  }
118
118
 
119
- html[data-theme='dark'] & {
119
+ html[data-stack-theme='dark'] & {
120
120
  background-color: ${(props) => props.$colors.dark.bgColor};
121
121
  color: ${(props) => props.$colors.dark.textColor};
122
122
  &:not([disabled]) {
@@ -152,8 +152,8 @@ var Button = React.forwardRef(
152
152
  $colors: { dark, light },
153
153
  ...props,
154
154
  children: [
155
- /* @__PURE__ */ jsx("div", { style: { position: "absolute", top: "50%", left: "50%", transform: "translate(-50%, -50%)", visibility: loading ? "visible" : "hidden" }, children: /* @__PURE__ */ jsx(LoadingIndicator, { color: { light: light.textColor, dark: dark.textColor } }) }),
156
- /* @__PURE__ */ jsx("div", { style: { visibility: loading ? "hidden" : "visible" }, children: props.children })
155
+ /* @__PURE__ */ jsx("span", { style: { position: "absolute", top: "50%", left: "50%", transform: "translate(-50%, -50%)", visibility: loading ? "visible" : "hidden" }, children: /* @__PURE__ */ jsx(LoadingIndicator, { color: { light: light.textColor, dark: dark.textColor } }) }),
156
+ /* @__PURE__ */ jsx("span", { style: { visibility: loading ? "hidden" : "visible", whiteSpace: "nowrap" }, children: props.children })
157
157
  ]
158
158
  }
159
159
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components-core/button.tsx"],"sourcesContent":["'use client';\n\nimport React, { useMemo } from \"react\";\nimport { useDesign } from \"../providers/design-provider\";\nimport Color from 'color';\nimport styled from 'styled-components';\nimport { BORDER_RADIUS, FONT_FAMILY, FONT_SIZES } from \"../utils/constants\";\nimport LoadingIndicator from \"./loading-indicator\";\n\nfunction getColors({\n propsColor, \n colors, \n variant, \n}: {\n propsColor?: string, \n colors: { primaryColor: string, secondaryColor: string, backgroundColor: string },\n variant: 'primary' | 'secondary' | 'warning',\n}): { \n bgColor: string, \n hoverBgColor: string,\n activeBgColor: string,\n textColor: string,\n} {\n let bgColor;\n switch (variant) {\n case 'primary': {\n bgColor = colors.primaryColor;\n break;\n }\n case 'secondary': {\n bgColor = colors.secondaryColor;\n break;\n }\n case 'warning': {\n bgColor = '#ff4500';\n break;\n }\n }\n if (propsColor) {\n bgColor = propsColor;\n }\n\n const c = Color(bgColor);\n const pc = Color(colors.primaryColor);\n\n const changeColor = (value: number) => {\n return c.hsl(c.hue(), c.saturationl(), c.lightness() + value).toString();\n };\n \n const getAlpha = (alpha: number) => {\n return Color(\n pc.isDark() ? 'white' : 'black'\n ).alpha(alpha).toString();\n };\n\n if (c.alpha() === 0) {\n return {\n bgColor: 'transparent',\n hoverBgColor: getAlpha(0.1),\n activeBgColor: getAlpha(0.2),\n textColor: colors.primaryColor,\n };\n } else if (c.isLight()) {\n return {\n bgColor,\n hoverBgColor: changeColor(-10),\n activeBgColor: changeColor(-20),\n textColor: 'black',\n };\n } else {\n return {\n bgColor,\n hoverBgColor: changeColor(10),\n activeBgColor: changeColor(20),\n textColor: 'white',\n };\n }\n}\n\nexport type ButtonProps = {\n variant?: 'primary' | 'secondary' | 'warning',\n color?: string,\n size?: 'sm' | 'md' | 'lg',\n loading?: boolean,\n onClick?: (() => void) | (() => Promise<void>),\n} & Omit<React.HTMLProps<HTMLButtonElement>, 'size' | 'type' | 'onClick'>\n\ntype ButtonColors = {\n bgColor: string, \n hoverBgColor: string,\n activeBgColor: string,\n textColor: string,\n}\n\nconst StyledButton = styled.button<{\n $size: 'sm' | 'md' | 'lg',\n $loading: boolean,\n $colors: {\n dark: ButtonColors,\n light: ButtonColors,\n },\n}>`\n border: 0;\n border-radius: ${BORDER_RADIUS};\n padding: ${props => {\n switch (props.$size) {\n case 'sm': { return '0rem 0.75rem'; }\n case 'md': { return '0rem 1rem'; }\n case 'lg': { return '0rem 2rem'; }\n }\n }};\n height: ${props => {\n switch (props.$size) {\n case 'sm': { return '2rem'; }\n case 'md': { return '2.5rem'; }\n case 'lg': { return '3rem'; }\n }\n }};\n font-family: ${FONT_FAMILY};\n font-size: ${FONT_SIZES.md};\n opacity: ${props => props.disabled ? 0.5 : 1};\n transition: background-color 0.2s;\n cursor: pointer;\n position: relative;\n &:disabled {\n cursor: auto;\n opacity: 0.5;\n }\n\n background-color: ${props => props.$colors.light.bgColor};\n color: ${props => props.$colors.light.textColor};\n &:not([disabled]) {\n &:active,&:hover:active {\n background-color: ${props => props.$colors.light.activeBgColor};\n }\n &:hover {\n background-color: ${props => props.$colors.light.hoverBgColor};\n }\n }\n\n html[data-theme='dark'] & {\n background-color: ${props => props.$colors.dark.bgColor};\n color: ${props => props.$colors.dark.textColor};\n &:not([disabled]) {\n &:active,&:hover:active {\n background-color: ${props => props.$colors.dark.activeBgColor};\n }\n &:hover {\n background-color: ${props => props.$colors.dark.hoverBgColor};\n }\n }\n }\n`;\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({\n variant='primary',\n size='md',\n loading=false,\n ...props\n }, ref) => {\n const { colors } = useDesign();\n\n const { dark, light } = useMemo(() => {\n return {\n dark: getColors({ propsColor: props.color, colors: colors.dark, variant }),\n light: getColors({ propsColor: props.color, colors: colors.light, variant }),\n };\n }, [props.color, colors, variant]);\n\n return (\n <StyledButton\n ref={ref}\n $size={size}\n $loading={loading}\n $colors={{ dark, light }}\n {...props}\n >\n <div style={{ position: 'absolute', top: '50%', left: '50%', transform: 'translate(-50%, -50%)', visibility: loading ? 'visible' : 'hidden' }}>\n <LoadingIndicator color={{ light: light.textColor, dark: dark.textColor }}/>\n </div>\n <div style={{ visibility: loading ? 'hidden' : 'visible' }}>\n {props.children}\n </div>\n </StyledButton>\n );\n }\n);\n\nButton.displayName = 'Button';\n\nexport {\n Button,\n};\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/components-core/button.tsx"],"sourcesContent":["'use client';\n\nimport React, { useMemo } from \"react\";\nimport { useDesign } from \"../providers/design-provider\";\nimport Color from 'color';\nimport styled from 'styled-components';\nimport { BORDER_RADIUS, FONT_FAMILY, FONT_SIZES } from \"../utils/constants\";\nimport LoadingIndicator from \"./loading-indicator\";\n\nfunction getColors({\n propsColor, \n colors, \n variant, \n}: {\n propsColor?: string, \n colors: { primaryColor: string, secondaryColor: string, backgroundColor: string },\n variant: 'primary' | 'secondary' | 'warning',\n}): { \n bgColor: string, \n hoverBgColor: string,\n activeBgColor: string,\n textColor: string,\n} {\n let bgColor;\n switch (variant) {\n case 'primary': {\n bgColor = colors.primaryColor;\n break;\n }\n case 'secondary': {\n bgColor = colors.secondaryColor;\n break;\n }\n case 'warning': {\n bgColor = '#ff4500';\n break;\n }\n }\n if (propsColor) {\n bgColor = propsColor;\n }\n\n const c = Color(bgColor);\n const pc = Color(colors.primaryColor);\n\n const changeColor = (value: number) => {\n return c.hsl(c.hue(), c.saturationl(), c.lightness() + value).toString();\n };\n \n const getAlpha = (alpha: number) => {\n return Color(\n pc.isDark() ? 'white' : 'black'\n ).alpha(alpha).toString();\n };\n\n if (c.alpha() === 0) {\n return {\n bgColor: 'transparent',\n hoverBgColor: getAlpha(0.1),\n activeBgColor: getAlpha(0.2),\n textColor: colors.primaryColor,\n };\n } else if (c.isLight()) {\n return {\n bgColor,\n hoverBgColor: changeColor(-10),\n activeBgColor: changeColor(-20),\n textColor: 'black',\n };\n } else {\n return {\n bgColor,\n hoverBgColor: changeColor(10),\n activeBgColor: changeColor(20),\n textColor: 'white',\n };\n }\n}\n\nexport type ButtonProps = {\n variant?: 'primary' | 'secondary' | 'warning',\n color?: string,\n size?: 'sm' | 'md' | 'lg',\n loading?: boolean,\n onClick?: (() => void) | (() => Promise<void>),\n} & Omit<React.HTMLProps<HTMLButtonElement>, 'size' | 'type' | 'onClick'>\n\ntype ButtonColors = {\n bgColor: string, \n hoverBgColor: string,\n activeBgColor: string,\n textColor: string,\n}\n\nconst StyledButton = styled.button<{\n $size: 'sm' | 'md' | 'lg',\n $loading: boolean,\n $colors: {\n dark: ButtonColors,\n light: ButtonColors,\n },\n}>`\n border: 0;\n border-radius: ${BORDER_RADIUS};\n padding: ${props => {\n switch (props.$size) {\n case 'sm': { return '0rem 0.75rem'; }\n case 'md': { return '0rem 1rem'; }\n case 'lg': { return '0rem 2rem'; }\n }\n }};\n height: ${props => {\n switch (props.$size) {\n case 'sm': { return '2rem'; }\n case 'md': { return '2.5rem'; }\n case 'lg': { return '3rem'; }\n }\n }};\n font-family: ${FONT_FAMILY};\n font-size: ${FONT_SIZES.md};\n opacity: ${props => props.disabled ? 0.5 : 1};\n transition: background-color 0.2s;\n cursor: pointer;\n position: relative;\n &:disabled {\n cursor: auto;\n opacity: 0.5;\n }\n\n background-color: ${props => props.$colors.light.bgColor};\n color: ${props => props.$colors.light.textColor};\n &:not([disabled]) {\n &:active,&:hover:active {\n background-color: ${props => props.$colors.light.activeBgColor};\n }\n &:hover {\n background-color: ${props => props.$colors.light.hoverBgColor};\n }\n }\n\n html[data-stack-theme='dark'] & {\n background-color: ${props => props.$colors.dark.bgColor};\n color: ${props => props.$colors.dark.textColor};\n &:not([disabled]) {\n &:active,&:hover:active {\n background-color: ${props => props.$colors.dark.activeBgColor};\n }\n &:hover {\n background-color: ${props => props.$colors.dark.hoverBgColor};\n }\n }\n }\n`;\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({\n variant='primary',\n size='md',\n loading=false,\n ...props\n }, ref) => {\n const { colors } = useDesign();\n\n const { dark, light } = useMemo(() => {\n return {\n dark: getColors({ propsColor: props.color, colors: colors.dark, variant }),\n light: getColors({ propsColor: props.color, colors: colors.light, variant }),\n };\n }, [props.color, colors, variant]);\n\n return (\n <StyledButton\n ref={ref}\n $size={size}\n $loading={loading}\n $colors={{ dark, light }}\n {...props}\n >\n <span style={{ position: 'absolute', top: '50%', left: '50%', transform: 'translate(-50%, -50%)', visibility: loading ? 'visible' : 'hidden' }}>\n <LoadingIndicator color={{ light: light.textColor, dark: dark.textColor }}/>\n </span>\n <span style={{ visibility: loading ? 'hidden' : 'visible', whiteSpace: 'nowrap' }}>\n {props.children}\n </span>\n </StyledButton>\n );\n }\n);\n\nButton.displayName = 'Button';\n\nexport {\n Button,\n};\n"],"mappings":"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","names":[]}
@@ -14,7 +14,7 @@ var StyledCard = styled.div`
14
14
  border: 1px solid ${(props) => props.$colors.light.neutralColor};
15
15
  background-color: ${(props) => props.$colors.light.backgroundColor};
16
16
 
17
- html[data-theme='dark'] & {
17
+ html[data-stack-theme='dark'] & {
18
18
  border-color: ${(props) => props.$colors.dark.neutralColor};
19
19
  background-color: ${(props) => props.$colors.dark.backgroundColor};
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components-core/card.tsx"],"sourcesContent":["'use client';\n\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { useDesign } from \"..\";\nimport { ColorPalette } from \"../providers/design-provider\";\n\nconst StyledCard = styled.div<{ \n $colors: ColorPalette,\n}>`\n border-radius: 0.5rem;\n box-shadow: 0 1px 2px 0 rgba(0,0,0,0.05);\n padding: 1.5rem;\n\n border: 1px solid ${props => props.$colors.light.neutralColor};\n background-color: ${props => props.$colors.light.backgroundColor};\n\n html[data-theme='dark'] & {\n border-color: ${props => props.$colors.dark.neutralColor};\n background-color: ${props => props.$colors.dark.backgroundColor};\n }\n`;\n\nconst StyledCardHeader = styled.div`\n display: flex;\n flex-direction: column;\n gap: 0.375rem;\n margin-bottom: 1.5rem;\n`;\n\nconst StyledCardContent = styled.div`\n`;\n\nconst StyledCardFooter = styled.div`\n display: flex;\n align-items: center;\n margin-top: 1.5rem;\n`;\n\nconst Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>((props, ref) => {\n const { colors } = useDesign();\n return <StyledCard ref={ref} {...props} $colors={colors} />;\n});\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>((props, ref) => (\n <StyledCardHeader ref={ref} {...props} />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>((props, ref) => (\n <StyledCardContent ref={ref} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>((props, ref) => (\n <StyledCardFooter ref={ref} {...props} />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport { \n Card, \n CardHeader, \n CardFooter, \n CardContent,\n};\n"],"mappings":";;;AAEA,YAAY,WAAW;AACvB,OAAO,YAAY;AACnB,SAAS,iBAAiB;AAqCjB;AAlCT,IAAM,aAAa,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,sBAOJ,WAAS,MAAM,QAAQ,MAAM,YAAY;AAAA,sBACzC,WAAS,MAAM,QAAQ,MAAM,eAAe;AAAA;AAAA;AAAA,oBAG9C,WAAS,MAAM,QAAQ,KAAK,YAAY;AAAA,wBACpC,WAAS,MAAM,QAAQ,KAAK,eAAe;AAAA;AAAA;AAInE,IAAM,mBAAmB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAOhC,IAAM,oBAAoB,OAAO;AAAA;AAGjC,IAAM,mBAAmB,OAAO;AAAA;AAAA;AAAA;AAAA;AAMhC,IAAM,OAAa,iBAAiE,CAAC,OAAO,QAAQ;AAClG,QAAM,EAAE,OAAO,IAAI,UAAU;AAC7B,SAAO,oBAAC,cAAW,KAAW,GAAG,OAAO,SAAS,QAAQ;AAC3D,CAAC;AACD,KAAK,cAAc;AAEnB,IAAM,aAAmB,iBAAiE,CAAC,OAAO,QAChG,oBAAC,oBAAiB,KAAW,GAAG,OAAO,CACxC;AACD,WAAW,cAAc;AAEzB,IAAM,cAAoB,iBAAiE,CAAC,OAAO,QACjG,oBAAC,qBAAkB,KAAW,GAAG,OAAO,CACzC;AACD,YAAY,cAAc;AAE1B,IAAM,aAAmB,iBAAiE,CAAC,OAAO,QAChG,oBAAC,oBAAiB,KAAW,GAAG,OAAO,CACxC;AACD,WAAW,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/components-core/card.tsx"],"sourcesContent":["'use client';\n\nimport * as React from \"react\";\nimport styled from \"styled-components\";\nimport { useDesign } from \"..\";\nimport { ColorPalette } from \"../providers/design-provider\";\n\nconst StyledCard = styled.div<{ \n $colors: ColorPalette,\n}>`\n border-radius: 0.5rem;\n box-shadow: 0 1px 2px 0 rgba(0,0,0,0.05);\n padding: 1.5rem;\n\n border: 1px solid ${props => props.$colors.light.neutralColor};\n background-color: ${props => props.$colors.light.backgroundColor};\n\n html[data-stack-theme='dark'] & {\n border-color: ${props => props.$colors.dark.neutralColor};\n background-color: ${props => props.$colors.dark.backgroundColor};\n }\n`;\n\nconst StyledCardHeader = styled.div`\n display: flex;\n flex-direction: column;\n gap: 0.375rem;\n margin-bottom: 1.5rem;\n`;\n\nconst StyledCardContent = styled.div`\n`;\n\nconst StyledCardFooter = styled.div`\n display: flex;\n align-items: center;\n margin-top: 1.5rem;\n`;\n\nconst Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>((props, ref) => {\n const { colors } = useDesign();\n return <StyledCard ref={ref} {...props} $colors={colors} />;\n});\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>((props, ref) => (\n <StyledCardHeader ref={ref} {...props} />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>((props, ref) => (\n <StyledCardContent ref={ref} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>((props, ref) => (\n <StyledCardFooter ref={ref} {...props} />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport { \n Card, \n CardHeader, \n CardFooter, \n CardContent,\n};\n"],"mappings":";;;AAEA,YAAY,WAAW;AACvB,OAAO,YAAY;AACnB,SAAS,iBAAiB;AAqCjB;AAlCT,IAAM,aAAa,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,sBAOJ,WAAS,MAAM,QAAQ,MAAM,YAAY;AAAA,sBACzC,WAAS,MAAM,QAAQ,MAAM,eAAe;AAAA;AAAA;AAAA,oBAG9C,WAAS,MAAM,QAAQ,KAAK,YAAY;AAAA,wBACpC,WAAS,MAAM,QAAQ,KAAK,eAAe;AAAA;AAAA;AAInE,IAAM,mBAAmB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAOhC,IAAM,oBAAoB,OAAO;AAAA;AAGjC,IAAM,mBAAmB,OAAO;AAAA;AAAA;AAAA;AAAA;AAMhC,IAAM,OAAa,iBAAiE,CAAC,OAAO,QAAQ;AAClG,QAAM,EAAE,OAAO,IAAI,UAAU;AAC7B,SAAO,oBAAC,cAAW,KAAW,GAAG,OAAO,SAAS,QAAQ;AAC3D,CAAC;AACD,KAAK,cAAc;AAEnB,IAAM,aAAmB,iBAAiE,CAAC,OAAO,QAChG,oBAAC,oBAAiB,KAAW,GAAG,OAAO,CACxC;AACD,WAAW,cAAc;AAEzB,IAAM,cAAoB,iBAAiE,CAAC,OAAO,QACjG,oBAAC,qBAAkB,KAAW,GAAG,OAAO,CACzC;AACD,YAAY,cAAc;AAE1B,IAAM,aAAmB,iBAAiE,CAAC,OAAO,QAChG,oBAAC,oBAAiB,KAAW,GAAG,OAAO,CACxC;AACD,WAAW,cAAc;","names":[]}
@@ -15,6 +15,9 @@ var StyledTrigger = styled(DropdownMenuPrimitive.Trigger)`
15
15
  outline: none;
16
16
  box-shadow: 0;
17
17
  }
18
+ &:hover {
19
+ cursor: pointer;
20
+ }
18
21
  `;
19
22
  var DropdownMenuTrigger = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(StyledTrigger, { ref, ...props }));
20
23
  var StyledContent = styled(DropdownMenuPrimitive.Content)`
@@ -28,7 +31,7 @@ var StyledContent = styled(DropdownMenuPrimitive.Content)`
28
31
  border: 1px solid ${({ $colors }) => $colors.light.neutralColor};
29
32
  background: ${({ $colors }) => $colors.light.backgroundColor};
30
33
 
31
- html[data-theme='dark'] & {
34
+ html[data-stack-theme='dark'] & {
32
35
  border-color: ${({ $colors }) => $colors.dark.neutralColor};
33
36
  background: ${({ $colors }) => $colors.dark.backgroundColor};
34
37
  }
@@ -65,7 +68,7 @@ var StyledItem = styled(DropdownMenuPrimitive.Item)`
65
68
  background-color: ${SELECTED_BACKGROUND_COLORS.light};
66
69
  }
67
70
 
68
- html[data-theme='dark'] & {
71
+ html[data-stack-theme='dark'] & {
69
72
  &:hover {
70
73
  background-color: ${SELECTED_BACKGROUND_COLORS.dark};
71
74
  }
@@ -87,7 +90,7 @@ var StyledSeparator = styled(DropdownMenuPrimitive.Separator)`
87
90
  height: 1px;
88
91
  background-color: ${({ $colors }) => $colors.light.neutralColor};
89
92
 
90
- html[data-theme='dark'] & {
93
+ html[data-stack-theme='dark'] & {
91
94
  background-color: ${({ $colors }) => $colors.dark.neutralColor};
92
95
  }
93
96
  `;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components-core/dropdown.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport styled from 'styled-components';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { useDesign } from '..';\nimport { SELECTED_BACKGROUND_COLORS } from '../utils/constants';\nimport { ColorPalette } from '../providers/design-provider';\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\n\nconst StyledTrigger = styled(DropdownMenuPrimitive.Trigger)`\n all: unset;\n &:focus {\n outline: none;\n box-shadow: 0;\n }\n`;\n\nconst DropdownMenuTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <StyledTrigger ref={ref} {...props} />\n));\n\nconst StyledContent = styled(DropdownMenuPrimitive.Content)<{\n $colors: ColorPalette,\n}>`\n z-index: 50;\n min-width: 8rem;\n overflow: hidden;\n border-radius: 4px;\n padding: 0.25rem;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n\n border: 1px solid ${({ $colors }) => $colors.light.neutralColor};\n background: ${({ $colors }) => $colors.light.backgroundColor};\n\n html[data-theme='dark'] & {\n border-color: ${({ $colors }) => $colors.dark.neutralColor};\n background: ${({ $colors }) => $colors.dark.backgroundColor};\n }\n`;\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => {\n const { colors } = useDesign();\n return (\n <DropdownMenuPrimitive.Portal>\n <StyledContent \n $colors={colors}\n sideOffset={sideOffset} \n ref={ref} \n {...props} \n />\n </DropdownMenuPrimitive.Portal>\n );\n});\nDropdownMenuContent.displayName = 'DropdownMenuContent';\n\nconst StyledItem = styled(DropdownMenuPrimitive.Item)<{ \n $inset?: boolean,\n}>`\n display: flex;\n cursor: default;\n align-items: center;\n border-radius: 4px;\n padding: 0.375rem 0.5rem;\n font-size: 0.875rem;\n outline: none;\n transition: color 0.2s ease;\n &:focus {\n background-color: var(--accent);\n color: var(--accent-foreground);\n }\n ${({ $inset }) => $inset && 'padding-left: 2rem;'}\n\n &:hover {\n background-color: ${SELECTED_BACKGROUND_COLORS.light};\n }\n\n html[data-theme='dark'] & {\n &:hover {\n background-color: ${SELECTED_BACKGROUND_COLORS.dark};\n }\n }\n`;\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean,\n }\n>(({ className, inset, ...props }, ref) => {\n return <StyledItem ref={ref} {...props} $inset={inset} />;\n});\nDropdownMenuItem.displayName = 'DropdownMenuItem';\n\nconst StyledLabel = styled(DropdownMenuPrimitive.Label)<{ inset?: boolean }>`\n padding: 0.375rem 0.5rem;\n font-size: 0.875rem;\n ${({ inset }) => inset && 'padding-left: 2rem;'}\n`;\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean,\n }\n>(({ className, inset, ...props }, ref) => (\n <StyledLabel ref={ref} {...props} inset={inset} />\n));\nDropdownMenuLabel.displayName = 'DropdownMenuLabel';\n\nconst StyledSeparator = styled(DropdownMenuPrimitive.Separator)<{\n $colors: ColorPalette,\n}>`\n margin: 0.25rem -0.25rem;\n height: 1px;\n background-color: ${({ $colors }) => $colors.light.neutralColor};\n\n html[data-theme='dark'] & {\n background-color: ${({ $colors }) => $colors.dark.neutralColor};\n }\n`;\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => {\n const { colors } = useDesign();\n return <StyledSeparator ref={ref} {...props} $colors={colors} />;\n});\nDropdownMenuSeparator.displayName = 'DropdownMenuSeparator';\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n};\n"],"mappings":";;;AAEA,YAAY,WAAW;AACvB,OAAO,YAAY;AACnB,YAAY,2BAA2B;AACvC,SAAS,iBAAiB;AAC1B,SAAS,kCAAkC;AAiBzC;AAdF,IAAM,eAAqC;AAE3C,IAAM,gBAAgB,OAA6B,6BAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQ1D,IAAM,sBAA4B,iBAGhC,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,oBAAC,iBAAc,KAAW,GAAG,OAAO,CACrC;AAED,IAAM,gBAAgB,OAA6B,6BAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAUpC,CAAC,EAAE,QAAQ,MAAM,QAAQ,MAAM,YAAY;AAAA,gBACjD,CAAC,EAAE,QAAQ,MAAM,QAAQ,MAAM,eAAe;AAAA;AAAA;AAAA,oBAG1C,CAAC,EAAE,QAAQ,MAAM,QAAQ,KAAK,YAAY;AAAA,kBAC5C,CAAC,EAAE,QAAQ,MAAM,QAAQ,KAAK,eAAe;AAAA;AAAA;AAI/D,IAAM,sBAA4B,iBAGhC,CAAC,EAAE,WAAW,aAAa,GAAG,GAAG,MAAM,GAAG,QAAQ;AAClD,QAAM,EAAE,OAAO,IAAI,UAAU;AAC7B,SACE,oBAAuB,8BAAtB,EACC;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ,CAAC;AACD,oBAAoB,cAAc;AAElC,IAAM,aAAa,OAA6B,0BAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAehD,CAAC,EAAE,OAAO,MAAM,UAAU,qBAAqB;AAAA;AAAA;AAAA,wBAG3B,2BAA2B,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,0BAK9B,2BAA2B,IAAI;AAAA;AAAA;AAAA;AAKzD,IAAM,mBAAyB,iBAK7B,CAAC,EAAE,WAAW,OAAO,GAAG,MAAM,GAAG,QAAQ;AACzC,SAAO,oBAAC,cAAW,KAAW,GAAG,OAAO,QAAQ,OAAO;AACzD,CAAC;AACD,iBAAiB,cAAc;AAE/B,IAAM,cAAc,OAA6B,2BAAK;AAAA;AAAA;AAAA,IAGlD,CAAC,EAAE,MAAM,MAAM,SAAS,qBAAqB;AAAA;AAGjD,IAAM,oBAA0B,iBAK9B,CAAC,EAAE,WAAW,OAAO,GAAG,MAAM,GAAG,QACjC,oBAAC,eAAY,KAAW,GAAG,OAAO,OAAc,CACjD;AACD,kBAAkB,cAAc;AAEhC,IAAM,kBAAkB,OAA6B,+BAAS;AAAA;AAAA;AAAA,sBAKxC,CAAC,EAAE,QAAQ,MAAM,QAAQ,MAAM,YAAY;AAAA;AAAA;AAAA,wBAGzC,CAAC,EAAE,QAAQ,MAAM,QAAQ,KAAK,YAAY;AAAA;AAAA;AAIlE,IAAM,wBAA8B,iBAGlC,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ;AAClC,QAAM,EAAE,OAAO,IAAI,UAAU;AAC7B,SAAO,oBAAC,mBAAgB,KAAW,GAAG,OAAO,SAAS,QAAQ;AAChE,CAAC;AACD,sBAAsB,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/components-core/dropdown.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport styled from 'styled-components';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { useDesign } from '..';\nimport { SELECTED_BACKGROUND_COLORS } from '../utils/constants';\nimport { ColorPalette } from '../providers/design-provider';\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\n\nconst StyledTrigger = styled(DropdownMenuPrimitive.Trigger)`\n all: unset;\n &:focus {\n outline: none;\n box-shadow: 0;\n }\n &:hover {\n cursor: pointer;\n }\n`;\n\nconst DropdownMenuTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <StyledTrigger ref={ref} {...props} />\n));\n\nconst StyledContent = styled(DropdownMenuPrimitive.Content)<{\n $colors: ColorPalette,\n}>`\n z-index: 50;\n min-width: 8rem;\n overflow: hidden;\n border-radius: 4px;\n padding: 0.25rem;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n\n border: 1px solid ${({ $colors }) => $colors.light.neutralColor};\n background: ${({ $colors }) => $colors.light.backgroundColor};\n\n html[data-stack-theme='dark'] & {\n border-color: ${({ $colors }) => $colors.dark.neutralColor};\n background: ${({ $colors }) => $colors.dark.backgroundColor};\n }\n`;\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => {\n const { colors } = useDesign();\n return (\n <DropdownMenuPrimitive.Portal>\n <StyledContent \n $colors={colors}\n sideOffset={sideOffset} \n ref={ref} \n {...props} \n />\n </DropdownMenuPrimitive.Portal>\n );\n});\nDropdownMenuContent.displayName = 'DropdownMenuContent';\n\nconst StyledItem = styled(DropdownMenuPrimitive.Item)<{ \n $inset?: boolean,\n}>`\n display: flex;\n cursor: default;\n align-items: center;\n border-radius: 4px;\n padding: 0.375rem 0.5rem;\n font-size: 0.875rem;\n outline: none;\n transition: color 0.2s ease;\n &:focus {\n background-color: var(--accent);\n color: var(--accent-foreground);\n }\n ${({ $inset }) => $inset && 'padding-left: 2rem;'}\n\n &:hover {\n background-color: ${SELECTED_BACKGROUND_COLORS.light};\n }\n\n html[data-stack-theme='dark'] & {\n &:hover {\n background-color: ${SELECTED_BACKGROUND_COLORS.dark};\n }\n }\n`;\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean,\n }\n>(({ className, inset, ...props }, ref) => {\n return <StyledItem ref={ref} {...props} $inset={inset} />;\n});\nDropdownMenuItem.displayName = 'DropdownMenuItem';\n\nconst StyledLabel = styled(DropdownMenuPrimitive.Label)<{ inset?: boolean }>`\n padding: 0.375rem 0.5rem;\n font-size: 0.875rem;\n ${({ inset }) => inset && 'padding-left: 2rem;'}\n`;\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean,\n }\n>(({ className, inset, ...props }, ref) => (\n <StyledLabel ref={ref} {...props} inset={inset} />\n));\nDropdownMenuLabel.displayName = 'DropdownMenuLabel';\n\nconst StyledSeparator = styled(DropdownMenuPrimitive.Separator)<{\n $colors: ColorPalette,\n}>`\n margin: 0.25rem -0.25rem;\n height: 1px;\n background-color: ${({ $colors }) => $colors.light.neutralColor};\n\n html[data-stack-theme='dark'] & {\n background-color: ${({ $colors }) => $colors.dark.neutralColor};\n }\n`;\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => {\n const { colors } = useDesign();\n return <StyledSeparator ref={ref} {...props} $colors={colors} />;\n});\nDropdownMenuSeparator.displayName = 'DropdownMenuSeparator';\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n};\n"],"mappings":";;;AAEA,YAAY,WAAW;AACvB,OAAO,YAAY;AACnB,YAAY,2BAA2B;AACvC,SAAS,iBAAiB;AAC1B,SAAS,kCAAkC;AAoBzC;AAjBF,IAAM,eAAqC;AAE3C,IAAM,gBAAgB,OAA6B,6BAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAW1D,IAAM,sBAA4B,iBAGhC,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAC1B,oBAAC,iBAAc,KAAW,GAAG,OAAO,CACrC;AAED,IAAM,gBAAgB,OAA6B,6BAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAUpC,CAAC,EAAE,QAAQ,MAAM,QAAQ,MAAM,YAAY;AAAA,gBACjD,CAAC,EAAE,QAAQ,MAAM,QAAQ,MAAM,eAAe;AAAA;AAAA;AAAA,oBAG1C,CAAC,EAAE,QAAQ,MAAM,QAAQ,KAAK,YAAY;AAAA,kBAC5C,CAAC,EAAE,QAAQ,MAAM,QAAQ,KAAK,eAAe;AAAA;AAAA;AAI/D,IAAM,sBAA4B,iBAGhC,CAAC,EAAE,WAAW,aAAa,GAAG,GAAG,MAAM,GAAG,QAAQ;AAClD,QAAM,EAAE,OAAO,IAAI,UAAU;AAC7B,SACE,oBAAuB,8BAAtB,EACC;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACC,GAAG;AAAA;AAAA,EACN,GACF;AAEJ,CAAC;AACD,oBAAoB,cAAc;AAElC,IAAM,aAAa,OAA6B,0BAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAehD,CAAC,EAAE,OAAO,MAAM,UAAU,qBAAqB;AAAA;AAAA;AAAA,wBAG3B,2BAA2B,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,0BAK9B,2BAA2B,IAAI;AAAA;AAAA;AAAA;AAKzD,IAAM,mBAAyB,iBAK7B,CAAC,EAAE,WAAW,OAAO,GAAG,MAAM,GAAG,QAAQ;AACzC,SAAO,oBAAC,cAAW,KAAW,GAAG,OAAO,QAAQ,OAAO;AACzD,CAAC;AACD,iBAAiB,cAAc;AAE/B,IAAM,cAAc,OAA6B,2BAAK;AAAA;AAAA;AAAA,IAGlD,CAAC,EAAE,MAAM,MAAM,SAAS,qBAAqB;AAAA;AAGjD,IAAM,oBAA0B,iBAK9B,CAAC,EAAE,WAAW,OAAO,GAAG,MAAM,GAAG,QACjC,oBAAC,eAAY,KAAW,GAAG,OAAO,OAAc,CACjD;AACD,kBAAkB,cAAc;AAEhC,IAAM,kBAAkB,OAA6B,+BAAS;AAAA;AAAA;AAAA,sBAKxC,CAAC,EAAE,QAAQ,MAAM,QAAQ,MAAM,YAAY;AAAA;AAAA;AAAA,wBAGzC,CAAC,EAAE,QAAQ,MAAM,QAAQ,KAAK,YAAY;AAAA;AAAA;AAIlE,IAAM,wBAA8B,iBAGlC,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ;AAClC,QAAM,EAAE,OAAO,IAAI,UAAU;AAC7B,SAAO,oBAAC,mBAAgB,KAAW,GAAG,OAAO,SAAS,QAAQ;AAChE,CAAC;AACD,sBAAsB,cAAc;","names":[]}
@@ -43,7 +43,7 @@ var StyledInput = styled.input`
43
43
  color: ${PRIMARY_FONT_COLORS.light};
44
44
  }
45
45
 
46
- html[data-theme='dark'] & {
46
+ html[data-stack-theme='dark'] & {
47
47
  border-color: ${(props) => props.$colors.dark.neutralColor};
48
48
  color: ${PRIMARY_FONT_COLORS.dark};
49
49
  &::placeholder {