@ark-ui/solid 4.0.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/index.js CHANGED
@@ -211,7 +211,7 @@ const [EnvironmentContextProvider, useEnvironmentContext] = createContext({
211
211
  })
212
212
  });
213
213
 
214
- var _tmpl$$7 = /*#__PURE__*/web.template(`<span hidden>`);
214
+ var _tmpl$$8 = /*#__PURE__*/web.template(`<span hidden>`);
215
215
  const EnvironmentProvider = props => {
216
216
  const [spanRef, setSpanRef] = solidJs.createSignal();
217
217
  const getRootNode = () => runIfFn(props.value) ?? spanRef()?.ownerDocument ?? document;
@@ -228,7 +228,7 @@ const EnvironmentProvider = props => {
228
228
  return !props.value;
229
229
  },
230
230
  get children() {
231
- var _el$ = _tmpl$$7();
231
+ var _el$ = _tmpl$$8();
232
232
  web.use(setSpanRef, _el$);
233
233
  return _el$;
234
234
  }
@@ -824,7 +824,7 @@ const FieldsetLegend = props => {
824
824
  };
825
825
 
826
826
  const fieldsetAnatomy = anatomy.createAnatomy('fieldset').parts('root', 'errorText', 'helperText', 'legend');
827
- const parts$2 = fieldsetAnatomy.build();
827
+ const parts$3 = fieldsetAnatomy.build();
828
828
 
829
829
  const useFieldset = props => {
830
830
  const {
@@ -844,24 +844,24 @@ const useFieldset = props => {
844
844
  if (hasErrorText() && invalid) labelIds.push(errorTextId);
845
845
  if (hasHelperText()) labelIds.push(helperTextId);
846
846
  const getRootProps = () => ({
847
- ...parts$2.root.attrs,
847
+ ...parts$3.root.attrs,
848
848
  disabled,
849
849
  'data-disabled': dataAttr(disabled),
850
850
  'data-invalid': dataAttr(invalid),
851
851
  'aria-describedby': labelIds.join(' ') || undefined
852
852
  });
853
853
  const getLegendProps = () => ({
854
- ...parts$2.legend.attrs,
854
+ ...parts$3.legend.attrs,
855
855
  'data-disabled': dataAttr(disabled),
856
856
  'data-invalid': dataAttr(invalid)
857
857
  });
858
858
  const getHelperTextProps = () => ({
859
859
  id: helperTextId,
860
- ...parts$2.helperText.attrs
860
+ ...parts$3.helperText.attrs
861
861
  });
862
862
  const getErrorTextProps = () => ({
863
863
  id: errorTextId,
864
- ...parts$2.errorText.attrs,
864
+ ...parts$3.errorText.attrs,
865
865
  'aria-live': 'polite'
866
866
  });
867
867
  return solidJs.createMemo(() => ({
@@ -915,7 +915,7 @@ var fieldset = /*#__PURE__*/Object.freeze({
915
915
  });
916
916
 
917
917
  const fieldAnatomy = anatomy.createAnatomy('field').parts('root', 'errorText', 'helperText', 'input', 'label', 'select', 'textarea');
918
- const parts$1 = fieldAnatomy.build();
918
+ const parts$2 = fieldAnatomy.build();
919
919
 
920
920
  const useField = props => {
921
921
  const fieldset = useFieldsetContext();
@@ -938,7 +938,7 @@ const useField = props => {
938
938
  return;
939
939
  });
940
940
  const getRootProps = () => ({
941
- ...parts$1.root.attrs,
941
+ ...parts$2.root.attrs,
942
942
  id: rootId,
943
943
  role: 'group',
944
944
  'data-disabled': domQuery.dataAttr(disabled),
@@ -946,7 +946,7 @@ const useField = props => {
946
946
  'data-readonly': domQuery.dataAttr(readOnly)
947
947
  });
948
948
  const getLabelProps = () => ({
949
- ...parts$1.label.attrs,
949
+ ...parts$2.label.attrs,
950
950
  id: labelId,
951
951
  'data-disabled': domQuery.dataAttr(disabled),
952
952
  'data-invalid': domQuery.dataAttr(invalid),
@@ -969,23 +969,23 @@ const useField = props => {
969
969
  });
970
970
  const getInputProps = () => ({
971
971
  ...getControlProps(),
972
- ...parts$1.input.attrs
972
+ ...parts$2.input.attrs
973
973
  });
974
974
  const getTextareaProps = () => ({
975
975
  ...getControlProps(),
976
- ...parts$1.textarea.attrs
976
+ ...parts$2.textarea.attrs
977
977
  });
978
978
  const getSelectProps = () => ({
979
979
  ...getControlProps(),
980
- ...parts$1.select.attrs
980
+ ...parts$2.select.attrs
981
981
  });
982
982
  const getHelperTextProps = () => ({
983
983
  id: helperTextId,
984
- ...parts$1.helperText.attrs
984
+ ...parts$2.helperText.attrs
985
985
  });
986
986
  const getErrorTextProps = () => ({
987
987
  id: errorTextId,
988
- ...parts$1.errorText.attrs,
988
+ ...parts$2.errorText.attrs,
989
989
  'aria-live': 'polite'
990
990
  });
991
991
  return solidJs.createMemo(() => ({
@@ -2030,7 +2030,7 @@ const DatePickerLabel = props => {
2030
2030
  return web.createComponent(ark.label, mergedProps);
2031
2031
  };
2032
2032
 
2033
- var _tmpl$$6 = /*#__PURE__*/web.template(`<option>`);
2033
+ var _tmpl$$7 = /*#__PURE__*/web.template(`<option>`);
2034
2034
  const DatePickerMonthSelect = props => {
2035
2035
  const api = useDatePickerContext();
2036
2036
  const mergedProps = solid.mergeProps(() => api().getMonthSelectProps(), props);
@@ -2041,7 +2041,7 @@ const DatePickerMonthSelect = props => {
2041
2041
  return api().getMonths();
2042
2042
  },
2043
2043
  children: month => (() => {
2044
- var _el$ = _tmpl$$6();
2044
+ var _el$ = _tmpl$$7();
2045
2045
  web.insert(_el$, () => month.label);
2046
2046
  web.effect(() => _el$.value = month.value);
2047
2047
  return _el$;
@@ -2306,7 +2306,7 @@ const DatePickerViewTrigger = props => {
2306
2306
  return web.createComponent(ark.button, mergedProps);
2307
2307
  };
2308
2308
 
2309
- var _tmpl$$5 = /*#__PURE__*/web.template(`<option>`);
2309
+ var _tmpl$$6 = /*#__PURE__*/web.template(`<option>`);
2310
2310
  const DatePickerYearSelect = props => {
2311
2311
  const api = useDatePickerContext();
2312
2312
  const mergedProps = solid.mergeProps(() => api().getYearSelectProps(), props);
@@ -2317,7 +2317,7 @@ const DatePickerYearSelect = props => {
2317
2317
  return api().getYears();
2318
2318
  },
2319
2319
  children: year => (() => {
2320
- var _el$ = _tmpl$$5();
2320
+ var _el$ = _tmpl$$6();
2321
2321
  web.insert(_el$, () => year().label);
2322
2322
  web.effect(() => _el$.value = year().value);
2323
2323
  return _el$;
@@ -2731,7 +2731,10 @@ const FileUploadItemPreviewImage = props => {
2731
2731
  const fileUpload = useFileUploadContext();
2732
2732
  const itemProps = useFileUploadItemPropsContext();
2733
2733
  const [url, setUrl] = solidJs.createSignal('');
2734
- fileUpload().createFileUrl(itemProps.file, url => setUrl(url));
2734
+ solidJs.createEffect(() => {
2735
+ const cleanup = fileUpload().createFileUrl(itemProps.file, url => setUrl(url));
2736
+ solidJs.onCleanup(cleanup);
2737
+ });
2735
2738
  const mergedProps = solid.mergeProps(fileUpload().getItemPreviewImageProps({
2736
2739
  ...itemProps,
2737
2740
  url: url()
@@ -2879,7 +2882,7 @@ const FrameContent = props => {
2879
2882
  return children;
2880
2883
  };
2881
2884
 
2882
- var _tmpl$$4 = /*#__PURE__*/web.template(`<iframe>`);
2885
+ var _tmpl$$5 = /*#__PURE__*/web.template(`<iframe>`);
2883
2886
  const resetStyle = '<style>*,*::before,*::after { margin: 0; padding: 0; box-sizing: border-box; }</style>';
2884
2887
  const initialSrcDoc = `<html><head>${resetStyle}</head><body><div class="frame-root"></div></body></html>`;
2885
2888
  function getMountNode(frame) {
@@ -2927,7 +2930,7 @@ const Frame = props => {
2927
2930
  return web.createComponent(EnvironmentProvider, {
2928
2931
  value: () => frameRef()?.contentDocument ?? document,
2929
2932
  get children() {
2930
- var _el$ = _tmpl$$4();
2933
+ var _el$ = _tmpl$$5();
2931
2934
  var _ref$ = composeRefs(setFrameRef, localProps.ref);
2932
2935
  typeof _ref$ === "function" && web.use(_ref$, _el$);
2933
2936
  web.spread(_el$, localProps, false, true);
@@ -2978,7 +2981,7 @@ const useHighlight = props => {
2978
2981
  return solidJs.createMemo(() => highlightWord.highlightWord(props));
2979
2982
  };
2980
2983
 
2981
- var _tmpl$$3 = /*#__PURE__*/web.template(`<mark>`);
2984
+ var _tmpl$$4 = /*#__PURE__*/web.template(`<mark>`);
2982
2985
  const Highlight = props => {
2983
2986
  if (typeof props.text !== 'string') {
2984
2987
  throw new Error('[ark-ui/highlight] text must be a string');
@@ -2997,7 +3000,7 @@ const Highlight = props => {
2997
3000
  return chunk.text;
2998
3001
  },
2999
3002
  get children() {
3000
- var _el$ = _tmpl$$3();
3003
+ var _el$ = _tmpl$$4();
3001
3004
  web.spread(_el$, localProps, false, true);
3002
3005
  web.insert(_el$, () => chunk.text);
3003
3006
  return _el$;
@@ -4384,11 +4387,11 @@ const [SegmentGroupProvider, useSegmentGroupContext] = createContext({
4384
4387
  const SegmentGroupContext = props => props.children(useSegmentGroupContext());
4385
4388
 
4386
4389
  const segmentGroupAnatomy = radio.anatomy.rename('segment-group');
4387
- const parts = segmentGroupAnatomy.build();
4390
+ const parts$1 = segmentGroupAnatomy.build();
4388
4391
 
4389
4392
  const SegmentGroupIndicator = props => {
4390
4393
  const segmentGroup = useSegmentGroupContext();
4391
- const mergedProps = solid.mergeProps(() => segmentGroup().getIndicatorProps(), parts.indicator.attrs, props);
4394
+ const mergedProps = solid.mergeProps(() => segmentGroup().getIndicatorProps(), parts$1.indicator.attrs, props);
4392
4395
  return web.createComponent(ark.div, mergedProps);
4393
4396
  };
4394
4397
 
@@ -4405,7 +4408,7 @@ const [SegmentGroupItemPropsProvider, useSegmentGroupItemPropsContext] = createC
4405
4408
  const SegmentGroupItem = props => {
4406
4409
  const [itemProps, localProps] = createSplitProps()(props, ['value', 'disabled', 'invalid']);
4407
4410
  const segmentGroup = useSegmentGroupContext();
4408
- const mergedProps = solid.mergeProps(() => segmentGroup().getItemProps(itemProps), parts.item.attrs, localProps);
4411
+ const mergedProps = solid.mergeProps(() => segmentGroup().getItemProps(itemProps), parts$1.item.attrs, localProps);
4409
4412
  const itemState = solidJs.createMemo(() => segmentGroup().getItemState(itemProps));
4410
4413
  return web.createComponent(SegmentGroupItemPropsProvider, {
4411
4414
  value: itemProps,
@@ -4425,7 +4428,7 @@ const SegmentGroupItemContext = props => props.children(useSegmentGroupItemConte
4425
4428
  const SegmentGroupItemControl = props => {
4426
4429
  const segmentGroup = useSegmentGroupContext();
4427
4430
  const itemProps = useSegmentGroupItemPropsContext();
4428
- const mergedProps = solid.mergeProps(() => segmentGroup().getItemControlProps(itemProps), parts.itemControl.attrs, props);
4431
+ const mergedProps = solid.mergeProps(() => segmentGroup().getItemControlProps(itemProps), parts$1.itemControl.attrs, props);
4429
4432
  return web.createComponent(ark.div, mergedProps);
4430
4433
  };
4431
4434
 
@@ -4439,13 +4442,13 @@ const SegmentGroupItemHiddenInput = props => {
4439
4442
  const SegmentGroupItemText = props => {
4440
4443
  const segmentGroup = useSegmentGroupContext();
4441
4444
  const itemProps = useSegmentGroupItemPropsContext();
4442
- const mergedProps = solid.mergeProps(() => segmentGroup().getItemTextProps(itemProps), parts.itemText.attrs, props);
4445
+ const mergedProps = solid.mergeProps(() => segmentGroup().getItemTextProps(itemProps), parts$1.itemText.attrs, props);
4443
4446
  return web.createComponent(ark.span, mergedProps);
4444
4447
  };
4445
4448
 
4446
4449
  const SegmentGroupLabel = props => {
4447
4450
  const segmentGroup = useSegmentGroupContext();
4448
- const mergedProps = solid.mergeProps(() => segmentGroup().getLabelProps(), parts.label.attrs, props);
4451
+ const mergedProps = solid.mergeProps(() => segmentGroup().getLabelProps(), parts$1.label.attrs, props);
4449
4452
  return web.createComponent(ark.label, mergedProps);
4450
4453
  };
4451
4454
 
@@ -4469,7 +4472,7 @@ const useSegmentGroup = props => {
4469
4472
  const SegmentGroupRoot = props => {
4470
4473
  const [useSegmentGroupProps, localProps] = createSplitProps()(props, ['defaultValue', 'disabled', 'form', 'id', 'ids', 'name', 'onValueChange', 'orientation', 'readOnly', 'value']);
4471
4474
  const segmentGroup = useSegmentGroup(useSegmentGroupProps);
4472
- const mergedProps = solid.mergeProps(() => segmentGroup().getRootProps(), parts.root.attrs, localProps);
4475
+ const mergedProps = solid.mergeProps(() => segmentGroup().getRootProps(), parts$1.root.attrs, localProps);
4473
4476
  return web.createComponent(SegmentGroupProvider, {
4474
4477
  value: segmentGroup,
4475
4478
  get children() {
@@ -4482,7 +4485,7 @@ const SegmentGroupRootProvider = props => {
4482
4485
  const [{
4483
4486
  value: segmentGroup
4484
4487
  }, localProps] = createSplitProps()(props, ['value']);
4485
- const mergedProps = solid.mergeProps(() => segmentGroup().getRootProps(), parts.root.attrs, localProps);
4488
+ const mergedProps = solid.mergeProps(() => segmentGroup().getRootProps(), parts$1.root.attrs, localProps);
4486
4489
  return web.createComponent(SegmentGroupProvider, {
4487
4490
  value: segmentGroup,
4488
4491
  get children() {
@@ -4539,7 +4542,7 @@ const SelectControl = props => {
4539
4542
  return web.createComponent(ark.div, mergedProps);
4540
4543
  };
4541
4544
 
4542
- var _tmpl$$2 = /*#__PURE__*/web.template(`<option value="">`),
4545
+ var _tmpl$$3 = /*#__PURE__*/web.template(`<option value="">`),
4543
4546
  _tmpl$2$1 = /*#__PURE__*/web.template(`<option>`);
4544
4547
  const SelectHiddenSelect = props => {
4545
4548
  const select = useSelectContext();
@@ -4557,7 +4560,7 @@ const SelectHiddenSelect = props => {
4557
4560
  return isValueEmpty();
4558
4561
  },
4559
4562
  get children() {
4560
- return _tmpl$$2();
4563
+ return _tmpl$$3();
4561
4564
  }
4562
4565
  }), web.createComponent(solidJs.Index, {
4563
4566
  get each() {
@@ -4890,14 +4893,14 @@ const SignaturePadRootProvider = props => {
4890
4893
  });
4891
4894
  };
4892
4895
 
4893
- var _tmpl$$1 = /*#__PURE__*/web.template(`<title>Signature`),
4896
+ var _tmpl$$2 = /*#__PURE__*/web.template(`<title>Signature`),
4894
4897
  _tmpl$2 = /*#__PURE__*/web.template(`<svg><path></svg>`, false, true);
4895
4898
  const SignaturePadSegment = props => {
4896
4899
  const signaturePad = useSignaturePadContext();
4897
4900
  const mergedProps = solid.mergeProps(() => signaturePad().getSegmentProps(), props);
4898
4901
  return web.createComponent(ark.svg, web.mergeProps(mergedProps, {
4899
4902
  get children() {
4900
- return [_tmpl$$1(), web.createComponent(solidJs.For, {
4903
+ return [_tmpl$$2(), web.createComponent(solidJs.For, {
4901
4904
  get each() {
4902
4905
  return signaturePad().paths;
4903
4906
  },
@@ -6007,12 +6010,12 @@ const ToastDescription = props => {
6007
6010
  return web.createComponent(ark.div, mergedProps);
6008
6011
  };
6009
6012
 
6010
- var _tmpl$ = /*#__PURE__*/web.template(`<div><div></div><div>`);
6013
+ var _tmpl$$1 = /*#__PURE__*/web.template(`<div><div></div><div>`);
6011
6014
  const ToastRoot = props => {
6012
6015
  const toast = useToastContext();
6013
6016
  const mergedProps = solid.mergeProps(() => toast().getRootProps(), props);
6014
6017
  return (() => {
6015
- var _el$ = _tmpl$(),
6018
+ var _el$ = _tmpl$$1(),
6016
6019
  _el$2 = _el$.firstChild,
6017
6020
  _el$3 = _el$2.nextSibling;
6018
6021
  web.spread(_el$, mergedProps, false, true);
@@ -6074,6 +6077,103 @@ var toast = /*#__PURE__*/Object.freeze({
6074
6077
  Title: ToastTitle
6075
6078
  });
6076
6079
 
6080
+ const [ToggleProvider, useToggleContext] = createContext({
6081
+ hookName: 'useToggleContext',
6082
+ providerName: '<ToggleProvider />'
6083
+ });
6084
+
6085
+ const ToggleContext = props => props.children(useToggleContext());
6086
+
6087
+ const ToggleIndicator = props => {
6088
+ const {
6089
+ children,
6090
+ fallback,
6091
+ ...restProps
6092
+ } = props;
6093
+ const toggle = useToggleContext();
6094
+ const mergedProps = solid.mergeProps(() => toggle().getIndicatorProps(), restProps);
6095
+ return web.createComponent(ark.div, web.mergeProps(mergedProps, {
6096
+ get children() {
6097
+ return web.createComponent(solidJs.Show, {
6098
+ get when() {
6099
+ return toggle().pressed;
6100
+ },
6101
+ fallback: fallback,
6102
+ children: children
6103
+ });
6104
+ }
6105
+ }));
6106
+ };
6107
+
6108
+ const toggleAnatomy = anatomy.createAnatomy('toggle', ['root', 'indicator']);
6109
+ const parts = toggleAnatomy.build();
6110
+
6111
+ function useToggle(props) {
6112
+ const {
6113
+ defaultPressed,
6114
+ pressed,
6115
+ onPressedChange,
6116
+ disabled
6117
+ } = props;
6118
+ const [pressedState, setPressedState] = useControllableState({
6119
+ defaultValue: !!defaultPressed,
6120
+ value: pressed,
6121
+ onChange: onPressedChange
6122
+ });
6123
+ return solidJs.createMemo(() => ({
6124
+ pressed: pressedState(),
6125
+ disabled: !!disabled,
6126
+ setPressed: setPressedState,
6127
+ getRootProps() {
6128
+ return {
6129
+ ...parts.root.attrs,
6130
+ type: 'button',
6131
+ disabled,
6132
+ 'aria-pressed': pressedState(),
6133
+ 'data-state': pressedState() ? 'on' : 'off',
6134
+ 'data-pressed': domQuery.dataAttr(pressedState()),
6135
+ 'data-disabled': domQuery.dataAttr(disabled),
6136
+ onClick(event) {
6137
+ if (event.defaultPrevented) return;
6138
+ if (disabled) return;
6139
+ setPressedState(!pressedState());
6140
+ }
6141
+ };
6142
+ },
6143
+ getIndicatorProps() {
6144
+ return {
6145
+ ...parts.indicator.attrs,
6146
+ 'data-disabled': domQuery.dataAttr(disabled),
6147
+ 'data-pressed': domQuery.dataAttr(pressedState()),
6148
+ 'data-state': pressedState() ? 'on' : 'off'
6149
+ };
6150
+ }
6151
+ }));
6152
+ }
6153
+
6154
+ var _tmpl$ = /*#__PURE__*/web.template(`<button>`);
6155
+ const ToggleRoot = props => {
6156
+ const [useToggleProps, localProps] = createSplitProps()(props, ['pressed', 'defaultPressed', 'disabled', 'onPressedChange']);
6157
+ const toggle = useToggle(useToggleProps);
6158
+ const mergedProps = solid.mergeProps(() => toggle().getRootProps(), localProps);
6159
+ return web.createComponent(ToggleProvider, {
6160
+ value: toggle,
6161
+ get children() {
6162
+ var _el$ = _tmpl$();
6163
+ web.spread(_el$, mergedProps, false, false);
6164
+ return _el$;
6165
+ }
6166
+ });
6167
+ };
6168
+
6169
+ var toggle = /*#__PURE__*/Object.freeze({
6170
+ __proto__: null,
6171
+ Context: ToggleContext,
6172
+ Indicator: ToggleIndicator,
6173
+ Root: ToggleRoot,
6174
+ toggleAnatomy: toggleAnatomy
6175
+ });
6176
+
6077
6177
  const [ToggleGroupProvider, useToggleGroupContext] = createContext({
6078
6178
  hookName: 'useToggleGroupContext',
6079
6179
  providerName: '<ToggleGroupProvider />'
@@ -7032,11 +7132,15 @@ exports.ToastDescription = ToastDescription;
7032
7132
  exports.ToastRoot = ToastRoot;
7033
7133
  exports.ToastTitle = ToastTitle;
7034
7134
  exports.Toaster = Toaster;
7135
+ exports.Toggle = toggle;
7136
+ exports.ToggleContext = ToggleContext;
7035
7137
  exports.ToggleGroup = toggleGroup;
7036
7138
  exports.ToggleGroupContext = ToggleGroupContext;
7037
7139
  exports.ToggleGroupItem = ToggleGroupItem;
7038
7140
  exports.ToggleGroupRoot = ToggleGroupRoot;
7039
7141
  exports.ToggleGroupRootProvider = ToggleGroupRootProvider;
7142
+ exports.ToggleIndicator = ToggleIndicator;
7143
+ exports.ToggleRoot = ToggleRoot;
7040
7144
  exports.Tooltip = tooltip;
7041
7145
  exports.TooltipArrow = TooltipArrow;
7042
7146
  exports.TooltipArrowTip = TooltipArrowTip;
@@ -7073,6 +7177,7 @@ exports.fieldAnatomy = fieldAnatomy;
7073
7177
  exports.fieldsetAnatomy = fieldsetAnatomy;
7074
7178
  exports.segmentGroupAnatomy = segmentGroupAnatomy;
7075
7179
  exports.splitPresenceProps = splitPresenceProps;
7180
+ exports.toggleAnatomy = toggleAnatomy;
7076
7181
  exports.useAccordion = useAccordion;
7077
7182
  exports.useAccordionContext = useAccordionContext;
7078
7183
  exports.useAccordionItemContext = useAccordionItemContext;
@@ -7158,6 +7263,8 @@ exports.useTimePickerContext = useTimePickerContext;
7158
7263
  exports.useTimer = useTimer;
7159
7264
  exports.useTimerContext = useTimerContext;
7160
7265
  exports.useToastContext = useToastContext;
7266
+ exports.useToggle = useToggle;
7267
+ exports.useToggleContext = useToggleContext;
7161
7268
  exports.useToggleGroup = useToggleGroup;
7162
7269
  exports.useToggleGroupContext = useToggleGroupContext;
7163
7270
  exports.useTooltip = useTooltip;